Nomad Stays
Server Details
Search remote-work accommodations worldwide; Trusted Stay Partners can manage their own listings.
- Status
- Healthy
- Uptime
- 100.0% over 76 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- nomadstays/nomadstays-mcp-server
- GitHub Stars
- 0
- Server Listing
- Nomad Stays
TDQS
Scored across 81 tools
The set spans distinct domains, but several tools within search and availability overlap closely, such as getStaysByCountry/Continent/Location/Lifestyle/Amenities/Budget and checkStayAvailability/getRoomAvailability/getAvailabilityByMonth/findNearestAvailability/hasAvailabilityInWindow. Descriptions clarify intended use, but the sheer number of adjacent tools makes misselection likely.
Every tool uses camelCase with a verb-first pattern and recognizable resource nouns (get/create/update/delete/list/submit/search etc.). Minor variants like getStayByID and signupNomadStaysAccount still fit the overall convention.
81 tools is far beyond the 3-15 well-scoped range and reflects multiple product areas packed into one server. The surface is too large for reliable tool selection even though individual tools are valid.
Coverage is broad: public search, availability, booking lifecycle, host listing management, applications, payment, signup, and help center are all represented. Minor gaps remain, such as room-photo upload and some application lifecycle cleanup, but core workflows are covered.
Available Tools
81 toolsbookStayAInspect
Create a real booking from a quoteId returned by quoteStayBooking, and return a hosted checkoutUrl. The quote's price/availability is re-validated server-side one more time before the booking is created — a stale or expired quote will be rejected with a message to call quoteStayBooking again. You MUST send the checkoutUrl to the member and tell them to open it in their own browser to pay — you cannot complete this payment on their behalf, and no card details ever pass through you. Requires NOMADSTAYS_MCP_AGENT_TOKEN with the 'bookings' scope.
| Name | Required | Description | Default |
|---|---|---|---|
| quoteId | Yes | The quoteId returned by quoteStayBooking | |
| contactName | No | Guest's full name for the booking. Defaults to the member's account name if omitted. | |
| contactEmail | No | Contact email for the booking. Defaults to the member's account email if omitted. | |
| contactPhone | No | Contact phone number for the booking. | |
| specialRequest | No | Any special request to pass along to the Stay. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing server-side price/availability re-validation, rejection behavior for stale quotes, the out-of-band payment model (member opens checkoutUrl in their own browser; no card details pass through), and the required NOMADSTAYS_MCP_AGENT_TOKEN 'bookings' scope. This is exactly the behavioral context annotations readOnlyHint/destructiveHint cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose in the first clause, then layers prerequisite, failure handling, and the payment hand-off rule. Every sentence carries distinct, actionable information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description still explains the return (hosted checkoutUrl) and the full lifecycle: quote → re-validate → create → hand off to member. Auth scope, error path, and payment constraints are all covered, leaving no operational gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all five parameters including defaults for contactName/contactEmail. The description reinforces that quoteId is the driving input but adds no new format, constraint, or example meaning beyond the schema, warranting the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a real booking from a quoteId') and the return value ('hosted checkoutUrl'), and names the sibling quoteStayBooking as the source of the required input. An agent can distinguish this from quoteStayBooking and the many create* application siblings without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly defines the prerequisite (a quoteId from quoteStayBooking), the failure path for stale/expired quotes ('call quoteStayBooking again'), and the mandatory post-call action (send the checkoutUrl to the member for them to pay). The when-to-use flow is fully specified with no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancelBookingADestructiveInspect
Cancel one of the caller's own paid Stay bookings under the Stay's cancellation policy. Only call this after getCancellationOptions returned canCancel: true, you have told the member its message and onCancel text, and the member has explicitly said they want to cancel; pass confirm: true. Cancelling can't be undone online. A refund or credit of the booking fee goes to the member's Nomad Stays wallet automatically. For a Custom policy (cancellationType 'request') this only sends a request to the Nomad Stays team and the Stay, and the booking stays active until they reply by email. The member, the Stay and the Nomad Stays team are emailed either way. Requires the 'bookings' scope.
| Name | Required | Description | Default |
|---|---|---|---|
| pnr | Yes | The booking reference (PNR) to cancel | |
| reason | No | The member's reason for cancelling, if they gave one (optional, up to 1000 characters) | |
| confirm | Yes | Must be true, and only once the member has explicitly agreed to cancel |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive=true, idempotent=false and readOnly=false, but the description adds far more: cancellation cannot be undone online, refund/credit lands in the wallet automatically, Custom policy ('request') only emails a request and leaves the booking active, and all three parties are emailed. It also names the required 'bookings' scope, which no annotation conveys.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action, then preconditions, then consequences, then the policy exception, then scope — a logical reading order with no filler. It is dense at five sentences, but nearly every clause carries behaviorally load-bearing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive three-parameter mutation with no output schema, the description covers preconditions, irreversibility, financial outcome, the divergent 'request' path, notification side effects, and authorization scope. Nothing an agent needs to call it safely is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so pnr, reason and confirm are already documented, and the description largely restates confirm: true. It adds marginal context by framing confirm as a consent gate tied to the member's explicit statement, but adds nothing about reason or pnr beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb and resource scoped to "one of the caller's own paid Stay bookings under the Stay's cancellation policy", which is unmistakably distinct from the read-only getCancellationOptions and listMyBookings siblings. An agent knows exactly what object is affected and under what governing rules.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit gating sequence: only call after getCancellationOptions returned canCancel: true, after relaying message and onCancel text to the member, and after the member explicitly agreed, with confirm: true required. The alternative/read tool is named and the precondition that routes to it is stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
checkStayAvailabilityBRead-onlyInspect
Check if a specific stay is available for given check-in and check-out dates. Returns availability status and room details.
| Name | Required | Description | Default |
|---|---|---|---|
| stayId | Yes | The unique identifier of the stay | |
| checkIn | Yes | Check-in date in ISO format (YYYY-MM-DD) | |
| checkOut | Yes | Check-out date in ISO format (YYYY-MM-DD) | |
| roomType | No | Optional specific room type to check availability for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false and destructiveHint=false, so the safety profile is covered. The description adds only that it returns availability status and room details; it says nothing about rate limits, whether availability is real-time or cached, or what happens on invalid dates. Adequate given the annotation coverage, but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, and the core action is front-loaded before the return-value note. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (4 flat params, no nested objects), and the description covers purpose and the gist of the response in lieu of an output schema. However, it omits the one thing an agent most needs here: how this differs from the other availability siblings, which is the main remaining ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — every parameter, including roomType being optional and the ISO date format, is documented in the schema. The description adds no format, constraint, or default information beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('check if a specific stay is available') plus the required inputs and the return payload. It is clear on its own, but it never distinguishes itself from the many sibling availability tools (getRoomAvailability, findNearestAvailability, hasAvailabilityInWindow, getAvailabilityByMonth), so an agent cannot tell which of them to pick from this text alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance is given, and no alternative is named. The sibling list contains at least four other availability-checking tools, so the absence of routing guidance is a real gap rather than a minor omission.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createCoworkingApplicationAInspect
Start a new Coworking Application for the caller. Much simpler than the Stay/Experience applications: no VAT/tourism-number/business-model rules, no Application Fee, and no billing step at all — once coworkingName, applicantName, applicantEmail, city and country are present, nextAction goes straight to 'submit'. Call getCountryOptions first to find a valid country name (must be the exact tbCountry.CountryName, not an ID). Requires NOMADSTAYS_MCP_AGENT_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | ||
| address | No | ||
| country | No | Exact tbCountry.CountryName (not a country ID) — use getCountryOptions and take the countryName field. Must not be a sanctioned country. | |
| website | No | ||
| telephone | No | ||
| applicantName | No | ||
| coworkingName | No | ||
| applicantEmail | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the generic mutation profile (readOnly=false, destructive=false, openWorld=false), but the description adds substantial context: no VAT/tourism-number/business-model rules, no application fee, no billing step at all, and the auth requirement (NOMADSTAYS_MCP_AGENT_TOKEN). This is exactly the behavioral disclosure annotations do not carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then the differentiators, then the prerequisite and token requirement. No filler, though the single long paragraph could be split for scanability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema and 8 loosely-specified params, the description covers workflow, prerequisites and auth. It stops short of explaining what the call returns or how the save/submit siblings fit, which an agent would still need to reason out.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 13%, so the description must compensate. It names and prioritizes five fields (coworkingName, applicantName, applicantEmail, city, country) and clarifies the country format, but leaves address, website and telephone unaddressed and does not explain the required-vs-optional mismatch (all 8 params are non-required in schema yet described as needed for submit).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource ('Start a new Coworking Application for the caller') and explicitly contrasts itself with the Stay/Experience application siblings, saying it is 'Much simpler'. An agent can separate this from createStayApplication and createExperienceApplication without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete prerequisite ('Call getCountryOptions first') and describes the intended workflow (once the five key fields are present, nextAction goes straight to 'submit'). No explicit when-not-to-use or pointer to saveCoworkingApplication/submitCoworkingApplication siblings, which would be needed for a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createExperienceApplicationAInspect
Start a new Experience Application for the caller. Any fields can be supplied now or filled in later via saveExperienceApplication — the applicant's name defaults from their Nomad Stays profile if not supplied. Call getCountryOptions and getBusinessModelOptions first to resolve experienceCountryId/postalCountryId/businessModelId, since country-specific rules (VAT number, tourism number, permitted business models) are enforced server-side and rejections name the specific field/reason. Experiences must run a minimum of 4 days. Requires NOMADSTAYS_MCP_AGENT_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
| zip | No | ||
| city | No | ||
| state | No | ||
| maxPax | No | Maximum participants | |
| mobile | No | ||
| street | No | ||
| daysQty | No | Minimum 4 days, enforced server-side | |
| website | No | ||
| comments | No | ||
| vatNumber | No | Required if the postal country's vatNumberRequired flag is true (see getCountryOptions) | |
| hasKitchen | No | ||
| description | No | ||
| businessName | No | ||
| hasInsurance | No | ||
| monthlyPrice | No | Price per person (USD) | |
| downloadSpeed | No | ||
| tourismNumber | No | Required if the experience country's tourismNumberRequired flag is true (see getCountryOptions) | |
| applicantEmail | No | ||
| experienceName | No | ||
| workFacilities | No | ||
| businessModelId | No | tbBusinessModel.EntryID — use getBusinessModelOptions. If the experience country's bookingModelsRestricted flag is true, only a 'StayDirect'-prefixed model is accepted. | |
| postalCountryId | No | tbCountry.CountryId for the applicant's billing/postal address — used only to check whether a VAT number is required, and stored on the member's business profile (not on the application itself). Use getCountryOptions to find a value. | |
| applicantLastName | No | Overrides the profile default for this application only — does not change the member's profile | |
| laundryFacilities | No | ||
| applicantFirstName | No | Overrides the profile default for this application only — does not change the member's profile | |
| experienceCountryId | No | tbCountry.CountryId for where the experience actually takes place — this is the country the application itself is filed under. Use getCountryOptions to find a value. | |
| availabilitySupplier | No | ||
| overnightLocationsQty | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (which only say non-read-only, non-destructive, closed-world): discloses server-side country-specific rule enforcement, that rejections name the specific field/reason, the 4-day minimum, profile-based name defaulting, and the required NOMADSTAYS_MCP_AGENT_TOKEN. This is exactly the behavioral context annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense paragraph, front-loaded with the action, then workflow, then constraints, then auth requirement. Every clause conveys actionable information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 28-param, all-optional create tool with no output schema, the description covers purpose, prerequisite resolution, server-side validations, and auth. The only minor gap is that it never indicates what the successful call returns (e.g., an application ID) that a subsequent save would need.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 28 parameters and only 36% schema coverage, the description compensates meaningfully by linking experienceCountryId/postalCountryId/businessModelId to their resolver tools and explaining the VAT/tourism/business-model constraints. It adds cross-parameter semantics, though many remaining fields (maxPax, website, comments, facilities) are left to their bare names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Start a new Experience Application') and immediately positions it against the sibling saveExperienceApplication and siblings like createStayApplication/createCoworkingApplication. An agent knows exactly what this creates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit workflow ordering: call getCountryOptions and getBusinessModelOptions first to resolve the ID params, and the relationship to saveExperienceApplication for later field completion is spelled out. This is when-to-use guidance with concrete prerequisites rather than implied usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createStayApplicationAInspect
Start a new Stay Application for the caller. Any fields can be supplied now or filled in later via saveStayApplication — the applicant's name defaults from their Nomad Stays profile if not supplied. Call getCountryOptions and getBusinessModelOptions first to resolve stayCountryId/postalCountryId/businessModelId, since country-specific rules (VAT number, tourism number, permitted business models) are enforced server-side and rejections name the specific field/reason. Requires NOMADSTAYS_MCP_AGENT_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
| zip | No | ||
| city | No | ||
| state | No | ||
| mobile | No | ||
| street | No | ||
| website | No | ||
| comments | No | ||
| stayName | No | ||
| vatNumber | No | Required if the postal country's vatNumberRequired flag is true (see getCountryOptions) | |
| hasKitchen | No | ||
| businessName | No | ||
| monthlyPrice | No | Indicative monthly wholesale price in US dollars (USD) — the application is always priced in USD. Packages are priced in the owner's chosen currency later, after approval. | |
| downloadSpeed | No | ||
| numberOfRooms | No | ||
| stayCountryId | No | tbCountry.CountryId for where the Stay is actually located — this is the country the application itself is filed under. Use getCountryOptions to find a value. | |
| tourismNumber | No | Required if the stay country's tourismNumberRequired flag is true (see getCountryOptions) | |
| applicantEmail | No | ||
| workFacilities | No | ||
| businessModelId | No | tbBusinessModel.EntryID — use getBusinessModelOptions. If the stay country's bookingModelsRestricted flag is true, only a 'StayDirect'-prefixed model is accepted. | |
| postalCountryId | No | tbCountry.CountryId for the applicant's billing/postal address — used only to check whether a VAT number is required, and stored on the member's business profile (not on the application itself). Use getCountryOptions to find a value. | |
| applicantLastName | No | Overrides the profile default for this application only — does not change the member's profile | |
| laundryFacilities | No | ||
| applicantFirstName | No | Overrides the profile default for this application only — does not change the member's profile | |
| availabilitySupplier | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly=false, destructive=false, openWorld=false), and the description adds substantial non-obvious behavior: server-side country-specific rule enforcement, rejections that name the offending field, profile-based name defaulting, and the required NOMADSTAYS_MCP_AGENT_TOKEN. The main gap is that no output schema exists and the description never says what a successful call returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action, then prerequisites, then behavioral caveats, in a tight sequence with no filler. It is dense but every clause adds actionable information, so length is justified rather than padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 24-parameter, zero-required tool with no output schema, this covers prerequisites, defaulting, validation behavior, and auth, which is the important surface area. It omits the approval/submission lifecycle (that submitStayApplication is the eventual finalizer) and any statement of what the call returns, which are meaningful gaps at this parameter count.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% against 24 parameters, so the description carries a heavy burden. It clarifies the country/model ID resolution path and the applicant-name defaulting, but roughly two-thirds of the parameters (zip, mobile, website, hasKitchen, downloadSpeed, workFacilities, laundryFacilities, etc.) are explained in neither place.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Start a new Stay Application for the caller'), clearly differentiating it from the save/submit/read siblings in the same family. It does not explicitly contrast itself with createCoworkingApplication or createExperienceApplication, but the 'Stay' qualifier plus the draft-creating framing make the scope unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives real operational guidance: call getCountryOptions and getBusinessModelOptions first, and use saveStayApplication later for incremental filling. It stops short of stating when NOT to use it (e.g., that submitStayApplication must follow to finalize), so the lifecycle guidance is implied rather than complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createStayEnquiryAInspect
Send an enquiry about a Stay that can't be booked right now — for example quoteStayBooking finds no bookable package, or the Stay page says it isn't bookable online. The enquiry goes to the Nomad Stays team, who check availability with the Stay and reply to the member by email (usually within one working day). The member's name and email come from their Nomad Stays account; do not ask for them. Only send an enquiry the member has asked for, and include what they told you (who is travelling, work needs, questions). Use bookStay instead whenever a quote succeeds. Requires the 'bookings' scope.
| Name | Required | Description | Default |
|---|---|---|---|
| nights | No | Number of nights, 1-365 (optional) | |
| stayId | Yes | The Stay's ID (EntryId), as returned by the search tools or getStayByID | |
| message | Yes | The member's enquiry, up to 2000 characters | |
| arrivalDate | No | Preferred arrival date, YYYY-MM-DD (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnly=false, openWorld=true, destructive=false; the description goes well beyond them by disclosing the downstream workflow (enquiry routed to the Nomad Stays team, availability checked, email reply within one working day), the auth requirement ('bookings' scope), and the fact that member identity is supplied by the account.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and trigger, and each sentence adds a distinct instruction (workflow, identity, consent, alternative). It is slightly long, but no sentence is filler except perhaps the redundant timing detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter mutation with no output schema, the description covers trigger, routing, downstream outcome, identity handling, and required scope. An agent has everything needed to decide and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it tells the agent what to put in 'message' (who is travelling, work needs, questions) and that name/email must not be collected. It says nothing extra about nights or arrivalDate beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Send an enquiry about a Stay that can't be booked right now') and immediately scopes the trigger condition. It explicitly distinguishes itself from bookStay and quoteStayBooking, so an agent can route correctly without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use conditions (quoteStayBooking finds no bookable package, or the Stay page says it isn't bookable online) and an explicit when-not-to-use rule ('Use bookStay instead whenever a quote succeeds'). It also adds a consent guardrail ('Only send an enquiry the member has asked for').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createStayPackageAInspect
Create a new pricing package on a Stay, optionally with initial price tiers. Requires an MCP agent token scoped to the owning account.
| Name | Required | Description | Default |
|---|---|---|---|
| listed | No | OPTIONAL: whether the package is publicly listed | |
| maxPax | No | OPTIONAL: max occupancy for this package | |
| prices | No | OPTIONAL: initial price tiers. If supplied, replaces all price rows for the package. Exactly one entry per 7/14/21/30-night tier used. | |
| stayId | Yes | The Stay's EntryID | |
| endDate | No | OPTIONAL: last check-in date this package is available for | |
| startDate | No | OPTIONAL: first check-in date this package is available for | |
| currencyFK | Yes | REQUIRED: the currency this package is priced in — an id from getCurrencyOptions. Packages can use any supported currency; ASK the owner which one, never assume USD. All buyPrice values are in this currency. | |
| roomTypeFK | No | OPTIONAL: room type id this package covers. Call getRoomTypeOptions for valid values. | |
| stayRoomFK | No | STRONGLY RECOMMENDED: the specific room this package covers (tbStaysRoom.EntryID). Call getMyStayRooms to find the right room id first. If omitted, the server guesses a room matching roomTypeFK, which may pick the wrong one when a Stay has multiple rooms of the same type. | |
| description | No | OPTIONAL: package description | |
| packageName | Yes | Package name | |
| advertisingEndpoint | No | OPTIONAL: only usable on Advertising-business-model Stays — ignored otherwise, matching the host UI which hides this field for all other business models. Check getBusinessModelOptions / the Stay's businessModelFK before setting. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safe-create profile (readOnlyHint=false, destructiveHint=false, openWorldHint=false), so the description's job is to add context. It contributes the auth requirement (agent token scoped to the owning account), which is genuinely beyond the annotations. It says nothing about idempotency, duplicate-name behavior, or what the call returns, so it adds one useful fact but not rich behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, and the core action is front-loaded ahead of the conditional detail. Nothing is repeated from the title or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter mutation relying on a 100%-covered schema plus annotations, the description covers purpose and auth adequately. The one real gap is that no output schema exists and the description never says what comes back (e.g. the new package id), which an agent chaining into updateStayPackage would want.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema is unusually rich — it already explains the tier enum, the buyPrice/sellPrice derivation, and the currency/room prerequisites. The description's 'optionally with initial price tiers' merely restates the prices parameter. Baseline 3 is correct here since the schema does all the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Create a new pricing package on a Stay', with a secondary clause covering the optional tiers. The verb 'Create' separates it cleanly from the sibling updateStayPackage and deleteStayPackage without needing to name them. Slightly short of a 5 because it never acknowledges those siblings or the getMyStayPackages read path.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives one prerequisite ('Requires an MCP agent token scoped to the owning account') and notes the tiers are optional, which is useful context for invocation. However it offers no when-to-use/when-not guidance and never points at updateStayPackage for modifying an existing package. Usage is implied by the verb rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createStayRoomAInspect
Create a new room on a Stay. Call getRoomTypeOptions(stayId) and getRoomFacilityOptions() first to find valid roomTypeFK/roomFacilityFk values. Boutique Stays are capped at 6 rooms total (one per Boutique1-6 slot) — creation is rejected once all 6 exist. Requires an MCP agent token scoped to the owning account.
| Name | Required | Description | Default |
|---|---|---|---|
| beds | No | OPTIONAL: number of beds | |
| stayId | Yes | The Stay's EntryID | |
| maxPerson | No | OPTIONAL: max occupancy | |
| mcpRoomId | No | OPTIONAL: external MCP room identifier to bind. NOT AVAILABLE for boutique Stays — the host UI has no field for this there, and the API will reject it. | |
| roomTitle | Yes | Room name/title | |
| roomTypeFK | No | REQUIRED for non-boutique Stays — a roomTypeId from getRoomTypeOptions(stayId). IGNORED for boutique Stays — the next available Boutique1-6 slot is auto-assigned server-side, matching the host UI (which has no room-type picker for boutique room creation). | |
| mainBedSize | No | OPTIONAL: main bed size | |
| otherBedSize | No | OPTIONAL: other bed size, or empty for none | |
| roomFacilityFk | No | OPTIONAL: facilityDetailId values from getRoomFacilityOptions() — the full set of amenities this room has. Wi-Fi is added automatically even if omitted. | |
| roomDescription | No | OPTIONAL: room description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag this as a non-read-only, non-destructive write, and the description adds substantial context beyond that: the Boutique-stay 6-room cap with rejection-once-full behavior, the 'one per Boutique1-6 slot' assignment rule, and an auth requirement ('MCP agent token scoped to the owning account'). These are exactly the operational constraints annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, front-loaded with the core action before prerequisites and constraints. Every sentence carries load (prerequisite calls, capacity cap, auth), though the density is right at the edge of what a single paragraph can hold cleanly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, the description covers the action, prerequisite tool calls, server-side edge cases (boutique slot auto-assignment, 6-room cap), and authorization scope. An agent has everything needed to invoke it correctly without further inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are already fully documented in the schema (including boutique-specific behavior for roomTypeFK and mcpRoomId). The description adds the source tools for the FK values, but does not add syntax or meaning beyond what the schema already provides, so the baseline of 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Create a new room on a Stay', which cleanly separates it from the updateStayRoom/deleteStayRoom siblings by inherent verb contrast. However it never names those siblings or otherwise explicitly routes the agent away from them, so it falls short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete prerequisites — call getRoomTypeOptions(stayId) and getRoomFacilityOptions() first to obtain valid FK values — which is actionable when-to-use guidance. It lacks an explicit statement of when NOT to use it (e.g., use updateStayRoom to modify an existing room), so no exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deleteRoomPhotoADestructiveInspect
Delete one photo from a room's gallery. Call getMyStayRooms first to find the exact fileName. Requires NOMADSTAYS_MCP_AGENT_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
| roomId | Yes | The room's EntryID | |
| stayId | Yes | The Stay's EntryID | |
| fileName | Yes | The exact file name from getMyStayRooms | |
| roomArea | Yes | 'photos' for the regular room gallery, 'workspace' for the room's coworking gallery |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the destructive nature is covered. The description adds value beyond that: the authentication requirement (NOMADSTAYS_MCP_AGENT_TOKEN) and the mandatory discovery step before deletion. It stops short of saying whether deletion is reversible or what happens on a bad fileName, but it meaningfully extends the annotation set.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, and the destructive action plus its prerequisite are front-loaded. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive 4-parameter tool with full schema coverage, annotations covering safety, and no output schema needed, the description supplies the two things structured data cannot: the auth requirement and the correct call order. Adequate and self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with roomArea's photos/workspace distinction and the fileName provenance already documented in the schema itself. The description's mention that fileName comes from getMyStayRooms largely restates the schema text, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource with clear scope: 'Delete one photo from a room's gallery.' The room-vs-stay boundary is implied but never contrasted with the sibling deleteStayPhoto, so an agent must infer which one applies. Clear, but no explicit sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit prerequisite workflow (call getMyStayRooms first to obtain the exact fileName), which is real ordering guidance rather than inference. It does not state when-not to use it or contrast with deleteStayPhoto, but the positive guidance is concrete and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deleteStayPackageADestructiveInspect
Permanently delete a pricing package and all its price tiers from a Stay. This is a hard delete (unlike room deletion, which is soft). Requires an MCP agent token scoped to the owning account.
| Name | Required | Description | Default |
|---|---|---|---|
| stayId | Yes | The Stay's EntryID | |
| packageId | Yes | The package's EntryID (tbStayPackages) to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, but the description adds material detail beyond them: the deletion is permanent, it cascades to all price tiers, it is a hard delete unlike the soft room deletion, and it requires an MCP agent token scoped to the owning account. That is exactly the extra context an agent needs before an irreversible mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with zero filler; the destructive nature is front-loaded, then the cascade scope, then the auth requirement. Every sentence carries information the agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-param mutation with no output schema and annotations covering the safety profile, the description covers the irreversible nature, cascade side effects, and auth requirement. Nothing needed to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters are fully documented in the schema (100% coverage) with their EntryID semantics, so the schema does the heavy lifting. The description adds no further detail about packageId format, lookup, or validation, making this a baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Permanently delete a pricing package') and names the cascade target ('all its price tiers') from a Stay. An agent can distinguish it from createStayPackage/updateStayPackage without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for choosing this tool ('Permanently delete', only when hard removal is intended) and contrasts it with room deletion, which is soft. It stops short of naming an explicit alternative for reversible changes or stating preconditions like package ownership beyond the token requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deleteStayPhotoADestructiveInspect
Delete one photo from a Stay. Call getMyStayPhotos first to find the exact fileName. Requires NOMADSTAYS_MCP_AGENT_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
| area | Yes | Which photo area the file belongs to (room photos aren't supported by this tool — manage those via updateStayRoom) | |
| stayId | Yes | The Stay's EntryID | |
| fileName | Yes | The exact file name from getMyStayPhotos, e.g. '69bdf22cdb0c43a7be3e825a0a3a2074.jpg' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description adds value beyond them by disclosing the required auth token (NOMADSTAYS_MCP_AGENT_TOKEN) and the single-file deletion scope. It does not state whether the deletion is permanent or recoverable, which would have earned a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action, then the prerequisite, then the auth requirement. No filler or redundant restatement of schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter destructive write with no output schema, the description plus annotations cover action, scope, prerequisite lookup, and auth. Coverage is strong; only the irreversibility/consequence of the deletion is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter is already documented, including fileName's provenance and the area enum's room-photo exclusion. The description's instruction to obtain fileName via getMyStayPhotos is a workflow aid rather than new per-parameter meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource with a clear scope constraint: 'Delete one photo from a Stay.' An agent can tell this deletes a single photo rather than reordering or uploading. However, it never names its nearest siblings (deleteRoomPhoto, reorderStayPhotos, uploadStayPhoto) to sharpen the boundary, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit prerequisite workflow: 'Call getMyStayPhotos first to find the exact fileName.' That reliably routes the agent through the right discovery call before invoking this tool. It stops short of stating when NOT to use it — the room-photo exclusion lives only in the schema's enum description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deleteStayRoomADestructiveInspect
Delete (soft-delete) a room from a Stay. Requires an MCP agent token scoped to the owning account.
| Name | Required | Description | Default |
|---|---|---|---|
| roomId | Yes | The room's EntryID — use getMyStayRooms to find it | |
| stayId | Yes | The Stay's EntryID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description still adds genuine value by disclosing that the delete is a SOFT delete (implying the record may be recoverable rather than purged) and naming the auth scope required. It stops short of saying whether the action is reversible or what it cascades to.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler, and the soft-delete qualifier is front-loaded right after the verb where it matters most.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation this is nearly complete: the annotations carry the safety signal, both params are fully documented, and the description supplies the soft-delete nuance and auth requirement. It omits downstream effects (e.g. impact on bookings or photos tied to the room), which would have rounded it out.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are already documented, including the pointer to getMyStayRooms for roomId. The description adds no parameter-level meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete (soft-delete) a room from a Stay'), and the 'from a Stay' scoping plus the room/photo distinction separates it from siblings like deleteRoomPhoto and deleteStayPhoto. An agent can pick this tool without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a prerequisite ('Requires an MCP agent token scoped to the owning account'), which is real usage context, but offers no when-to-use vs when-not guidance or any named alternative. Usage is only implied by the destructive verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
findNearestAvailabilityARead-onlyInspect
Find the nearest available dates when requested dates are not available. Searches for alternative check-in dates within a specified window and can adjust length of stay.
| Name | Required | Description | Default |
|---|---|---|---|
| stayId | Yes | The unique identifier of the stay | |
| maxLengthOfStay | No | Maximum length of stay in days (optional) | |
| minLengthOfStay | Yes | Minimum length of stay in days | |
| preferredCheckIn | Yes | Preferred check-in date in ISO format (YYYY-MM-DD) | |
| searchWindowDays | No | Number of days before and after preferred date to search (default: 90) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds real behavioral context beyond that – it searches a window and may adjust length of stay – which is non-obvious for a read query, though it doesn't state the return shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose and followed by the mechanism. No filler; every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with a fully documented schema and no output schema, the description covers purpose, trigger condition, and search behavior adequately. The one gap is that it doesn't hint at what is returned (e.g., candidate dates and adjusted stays), which the absent output schema leaves unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are already documented, including the default 90-day window and ISO date format. The description adds no syntax or format detail beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: finding nearest available dates and searching alternative check-in dates with LOS adjustment. It is clearly a fallback/alternative-finder distinct from simple availability checks, but it doesn't explicitly name siblings like checkStayAvailability or hasAvailabilityInWindow to sharpen the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear triggering condition: 'when requested dates are not available.' This tells the agent when to reach for it, but it names no alternatives or exclusions, so the agent must infer that direct availability checks are a separate tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getAdditionalInformationOptionsARead-onlyInspect
List valid values for one of the Additional Information picklists used in updateStayOrganisationalData: Children Allowed, Pets Allowed, or Parking. These are NOT booleans — they're lookup IDs (e.g. 'Yes', 'No', 'On Request') — call this to find the right value before writing petsAllowedId/childrenAllowedId/parkingId. Requires NOMADSTAYS_MCP_AGENT_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
| filterName | Yes | Which picklist to fetch options for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds genuinely non-obvious context beyond that: the values are lookup IDs, not booleans, and a NOMADSTAYS_MCP_AGENT_TOKEN is required. It stops short of describing the shape or size of the returned list, which is the remaining gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with zero filler. The resource enumeration is front-loaded, the boolean-vs-lookup warning comes before the usage instruction, and the auth requirement is a single trailing clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-enum, read-only lookup with no output schema, the description supplies enough: purpose, values-not-booleans warning, downstream usage, and an auth prerequisite. The only omission is how the returned options are structured (e.g. id/label pairs), which would help an agent map a name to a writable ID.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with an enum, so the baseline is 3; the description earns extra by explaining what the values mean semantically (lookup IDs such as 'Yes', 'No', 'On Request') and why the enum choice matters for the downstream writes. It does not restate the enum itself, which is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the specific verb (list valid values) and resource (Additional Information picklists: Children Allowed, Pets Allowed, Parking), and ties itself to the updateStayOrganisationalData workflow. An agent can distinguish it from siblings like getRoomTypeOptions or getCountryOptions without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly prescribes the moment of use: 'call this to find the right value before writing petsAllowedId/childrenAllowedId/parkingId', naming the dependent tool and the exact fields it feeds. This is a clear when-to-call rule with an implied alternative (do not guess a value).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getAllAmenitiesARead-onlyInspect
List all possible amenities in the database, grouped into Stay Amenities (referenced by tbStaysFacilities) and Room Amenities (referenced by tbStaysRoom.RoomFacilityFk).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds no behavioral context beyond that — nothing about result size, ordering, caching, or stability of the reference list. The grouping detail is structural rather than behavioral.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the grouping is stated before the internal table names, so an agent gets the useful part first. Nothing can be cut without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description carries the burden of describing returns, and it does disclose that results are grouped into Stay Amenities and Room Amenities. It is less clear about the actual item shape (whether each amenity carries an ID usable in updateStayFacilities or getStaysByAmenities), which is the one remaining gap for a lookup tool this simple.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline of 4 applies. The description correctly adds no parameter information and instead spends its words on the shape of the result.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (all possible amenities), and goes further by naming the two groups the result is split into. It implicitly differentiates itself from the narrower sibling getRoomAmenities by covering both stay and room amenities, though it never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the description suggests this is the full reference catalog, which an agent would use to discover valid amenity values before filtering or updating. There is no explicit when-to-use, no prerequisites, and no alternative tool named (getRoomAmenities, getRoomFacilityOptions, getFacilityGroups all overlap partially).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getAllLifestylesARead-onlyInspect
Returns all active lifestyle/genre categories available in NomadStays. Use this to discover what lifestyle categories exist before searching with getStaysByLifestyle.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds the useful 'active only' filtering qualifier, but says nothing about ordering, return shape, or whether categories can be empty — modest added value beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the purpose stated first and the routing guidance second. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple no-arg, read-only enumeration with no output schema, the description covers purpose, scope, and usage sufficiently. The only minor gap is not characterizing the returned category list (e.g., name/identifier fields), which an agent might want.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter semantics to explain; the baseline for a no-arg tool applies. Nothing in the description misleads about inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Returns all active lifestyle/genre categories') with an explicit scope qualifier ('available in NomadStays'). It is clearly distinguishable from the sibling getStaysByLifestyle, which it names directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use it ('to discover what lifestyle categories exist') and the condition that follows ('before searching with getStaysByLifestyle'), naming the exact alternative tool. Nothing about routing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getAvailabilityByMonthBRead-onlyInspect
Get all available booking windows in a specific month that meet the minimum length of stay requirement. Returns all possible check-in dates and their corresponding available periods.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | Year (e.g., 2026) | |
| month | Yes | Month number (1-12, where 1=January, 12=December) | |
| stayId | Yes | The unique identifier of the stay | |
| minLengthOfStay | Yes | Minimum length of stay in days required |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds useful return-shape context ('all possible check-in dates and their corresponding available periods'), but says nothing about pagination, date formats, or behavior when no windows qualify.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose and followed by the return shape; no filler. The second sentence is slightly redundant with the first but still earns its place by clarifying output.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter read tool with full schema coverage and safety annotations, the description covers purpose and rough output but omits sibling routing, error/empty-result behavior, and any date-format expectations. It is adequate but leaves clear gaps for an agent choosing among the many availability tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each of the four required parameters (year, month, stayId, minLengthOfStay) is documented in the schema with examples and ranges. The description only alludes to minLengthOfStay and month, adding no format or constraint detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Get), resource (available booking windows), and scope (a specific month filtered by minimum length of stay), which is concrete and actionable. It does not, however, distinguish itself from close siblings such as getRoomAvailability, checkStayAvailability, hasAvailabilityInWindow, or findNearestAvailability.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no mention of alternatives, despite several overlapping availability siblings (checkStayAvailability, hasAvailabilityInWindow, findNearestAvailability, getRoomAvailability). The 'minimum length of stay' constraint is the only implicit selection signal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getBookingStatusARead-onlyInspect
Check a Stay booking's real payment status by PNR. Status is always freshly re-verified against Airwallex directly if not already confirmed paid — never trust a client-supplied claim of success. Only ever returns bookings owned by the caller's own account. Requires NOMADSTAYS_MCP_AGENT_TOKEN with the 'bookings' scope.
| Name | Required | Description | Default |
|---|---|---|---|
| pnr | Yes | The booking reference (PNR) returned by bookStay |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial behavior beyond the annotations: status is re-verified live against Airwallex when not already confirmed paid, results are tenant-scoped to the caller's own account, and a specific token with the 'bookings' scope is required. These are exactly the freshness, authorization, and data-isolation facts an agent needs and that readOnlyHint does not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the action and key, followed by the freshness guarantee and the auth/scope constraints. No filler or restated name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read with no output schema and annotations already covering the safety profile, the description covers the remaining unknowns: freshness of the result, tenant isolation, and the required credential/scope. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the pnr description already maps to its source ('returned by bookStay'). The tool description adds only 'by PNR', so it does not meaningfully extend the schema; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Check a Stay booking's real payment status by PNR') and adds a scoping qualifier ('real payment status') that distinguishes it from sibling status-like tools such as getPurchaseStatus and listMyBookings. An agent can identify the target record type and the required key without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear framing for use ('never trust a client-supplied claim of success', implying it should be called to verify after booking) but does not explicitly name an alternative tool or a when-not condition. Context is clear without exclusions, which caps this at 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getBusinessModelOptionsARead-onlyInspect
List valid values for a Stay's listing/business model (businessModelId, read-only — displayed on the Stay but not editable via MCP or the host UI itself). Requires NOMADSTAYS_MCP_AGENT_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/non-destructive, so the bar is lower, yet the description adds real value: it discloses the required NOMADSTAYS_MCP_AGENT_TOKEN credential and clarifies the field is read-only and cannot be edited via MCP or host UI. It doesn't cover return shape, which is the only remaining gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence; the parenthetical is dense but each clause (read-only, not editable, token requirement) earns its place. Slightly convoluted nesting keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-arg enum lookup with no output schema, the definition covers purpose, safety, and auth. It stops short of describing the returned value structure, which an agent might want, but the essentials are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. The parenthetical identifies the field the values map to (businessModelId), which gives useful context, but there is no parameter syntax to explain.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (valid values for a Stay's listing/business model) and names the underlying field businessModelId. An agent can distinguish it from sibling enum lookups such as getStayTypeOptions or getRoomTypeOptions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage is clear from the options-style name and the 'valid values' framing, but the description never states when to call this versus the many sibling *Options tools or what the returned values feed into.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getCancellationOptionsARead-onlyInspect
Check whether one of the caller's own paid Stay bookings can still be cancelled under the Stay's cancellation policy, and what the member would get back. Returns state (open, request_only, expired, non_refundable, started, cancelled, request_pending), canCancel, cancellationType (refund, credit, request or none), deadlineUtc, message and onCancel (what cancelling would do). Always call this first and tell the member the message and onCancel text before offering cancelBooking. When state is expired, tell the member the cancellation period has expired; do not offer cancelBooking. Requires the 'bookings' scope.
| Name | Required | Description | Default |
|---|---|---|---|
| pnr | Yes | The booking reference (PNR), as returned by bookStay or listMyBookings |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, non-destructive), but the description adds context they cannot: the required 'bookings' scope, the constraint that only the caller's own paid bookings qualify, the closed enumeration of possible states, and a mandatory user-facing disclosure step. This is materially more than the annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then returns, then workflow rules, then auth, with no filler sentences. It is a dense single block that would read faster split into short lines for return fields and constraints, but nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by naming the return fields (state, canCancel, cancellationType, deadlineUtc, message, onCancel) and enumerating the state values. For a read-only pre-flight check, nothing needed to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so 'pnr' is already documented, but the description adds scoping meaning the schema does not: the booking must be the caller's own and paid. It does not add format hints, which is fine given a fully covered single string parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: checks whether one of the caller's own paid Stay bookings can still be cancelled, and what the member would get back. It also distinguishes itself from the nearest sibling by framing itself as the pre-check that must run before cancelBooking.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit sequencing ('Always call this first... before offering cancelBooking') and an explicit prohibition with its trigger condition ('When state is expired... do not offer cancelBooking'). The agent knows both when to call this and when to withhold the follow-up tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getCancellationPolicyOptionsARead-onlyInspect
List valid values for a Stay's cancellation policy (cxPolicyId in updateStayOrganisationalData). Requires NOMADSTAYS_MCP_AGENT_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds context the annotations do not: the required NOMADSTAYS_MCP_AGENT_TOKEN auth precondition. It says nothing about result size or ordering, which is a minor gap for a fixed enumeration list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the purpose and followed by the cross-reference and auth note. No filler, no repetition of the title or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must convey what comes back, and 'List valid values' does so adequately for a simple enumeration endpoint. It also names the consuming field and the auth requirement, leaving only return formatting unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero input parameters, so the baseline is 4. The description still adds meaning by explaining what the returned values are for — they populate the cxPolicyId argument of another tool — linking output to a sibling's parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List valid values for a Stay's cancellation policy') and disambiguates from the many other *Options siblings by naming the exact field it feeds (cxPolicyId in updateStayOrganisationalData). An agent can distinguish this from getRoomTypeOptions, getCurrencyOptions, etc. without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description ties the tool to its consumer: it supplies valid values for cxPolicyId in updateStayOrganisationalData, which tells the agent exactly when to reach for it. It does not state any exclusions or prerequisites beyond that, so it stops short of a full when/when-not statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getCountryOptionsARead-onlyInspect
List valid values for a Stay's country (countryId in updateStayOrganisationalData), with each country's name and 2-letter code. Requires NOMADSTAYS_MCP_AGENT_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false and destructiveHint=false, so the safety profile is covered; the description adds the non-obvious operational requirement of NOMADSTAYS_MCP_AGENT_TOKEN and discloses the returned content (name and 2-letter code). It does not mention result ordering or size, but those are minor for a static reference list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the purpose and the consuming field, with no filler or repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no parameters, the description covers what an agent needs: the payload fields (name, 2-letter code), the field it feeds, and the auth prerequisite. Only the envelope format of the result (list vs. keyed object) is left unspecified, which is a small gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters and the schema is an empty object, so there is nothing for the description to disambiguate; baseline 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) plus resource (valid values for a Stay's country) and the exact field it populates (countryId in updateStayOrganisationalData), which cleanly separates it from sibling option-listers like getCurrencyOptions and getStayTypeOptions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The reference to countryId in updateStayOrganisationalData gives clear context for when this tool is needed (before populating that field), but it does not state exclusions or name alternative sources of country data such as getStaysByCountry.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getCoworkingApplicationARead-onlyInspect
Get the full current state of one Coworking Application, including a nextAction hint and (if incomplete) a missingFields list naming exactly which required fields are still empty. Requires NOMADSTAYS_MCP_AGENT_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
| applicationId | Yes | The application's ID (use listCoworkingApplications to find it) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds real context beyond them: the response contains a nextAction hint and a missingFields list of exactly which required fields are empty, plus the NOMADSTAYS_MCP_AGENT_TOKEN auth requirement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler, and the scope statement is front-loaded ahead of the return-shape and auth details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully discloses the two key return elements (nextAction, missingFields) and the auth prerequisite, so an agent knows what it will get back. It stops short of describing failure behavior for an invalid applicationId, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (applicationId) and schema description coverage is 100%, so the schema already documents it fully. The description adds nothing about the parameter, which is the expected baseline when the schema carries the load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('the full current state of one Coworking Application'), making the singular scope explicit against the many-valued listCoworkingApplications and distinguishing it from the sibling getExperienceApplication/getStayApplication tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is the single-record read versus the list, and the 'if incomplete' phrasing hints at a pre-submit check, but there is no explicit when-to-use/when-not or named alternative in the description itself (the listCoworkingApplications pointer lives in the schema, not the description).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getCurrencyOptionsARead-onlyInspect
List valid currency ids/codes for use as a package's currencyFK.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is fully covered. The description adds the use-case context (currencyFK) but no additional behavioral details such as return format or any rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. Every word contributes to identifying the resource and its intended use.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter, read-only option-list tool with no output schema, the description is complete: it names the returned items (currency ids/codes) and the intended usage. Nothing an agent needs in order to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there are no parameter semantics to clarify. The baseline score of 4 applies because the description cannot and need not compensate for any schema gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List), resource (valid currency ids/codes), and immediate purpose (for use as a package's currencyFK). The resource itself distinguishes it from sibling option-listing tools like getCountryOptions or getStayTypeOptions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly ties the tool to a concrete scenario: obtaining a currency identifier for a package's currencyFK. It does not name alternatives or state when not to use it, but the context is clear enough for an agent to know when to call it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getExperienceApplicationARead-onlyInspect
Get the full current state of one Experience Application, including a nextAction hint and (if incomplete) a missingFields list naming exactly which required fields are still empty. Requires NOMADSTAYS_MCP_AGENT_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
| applicationId | Yes | The application's ID (use listExperienceApplications to find it) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false), so the bar is lower. The description still adds real value beyond that: it discloses the response shape (nextAction hint, missingFields list) and the required NOMADSTAYS_MCP_AGENT_TOKEN, which annotations do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste, with the core purpose front-loaded and the return content and auth requirement following. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description takes on the burden of describing returns and does so (nextAction hint, missingFields list for incomplete applications), plus notes the token requirement. For a single-parameter read tool this is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single applicationId parameter, so the schema already carries the meaning. The description adds nothing about the parameter beyond that baseline, so 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Get the full current state of one Experience Application') that is plainly distinguishable from getStayApplication and getCoworkingApplication by the resource noun. It is clear and specific, but never explicitly contrasts itself with those sibling getters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied (fetch the state of an existing application) rather than stated. There is no when-to-use/when-not guidance, and the only routing hint toward listExperienceApplications lives in the schema parameter description, not the tool description itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getFacilityGroupsARead-onlyInspect
List every facility/checkbox group name that exists on the platform (e.g. 'Languages Spoken', 'General', 'Services', 'Meal', 'Position', 'Remote Worker'). Call this first if you don't already know the exact group name to pass to getMyStayFacilities/updateStayFacilities. Requires NOMADSTAYS_MCP_AGENT_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered structurally. The description adds a genuinely non-obvious requirement – the NOMADSTAYS_MCP_AGENT_TOKEN auth need – which the annotations do not convey. It stops short of describing result volume or ordering, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each load-bearing: what it lists, the examples that make the resource concrete, the routing instruction, and the auth prerequisite. The call-first guidance is front-loaded where an agent will see it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only listing tool with no output schema, everything needed to call it correctly is present: purpose, example return values, sequencing relative to consumers, and the auth token. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero input parameters, so the baseline is 4 and there is nothing for the description to compensate for. The example group names give the agent a sense of the value domain it will receive, a modest bonus over the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List every facility/checkbox group name'), supplies concrete example values, and scopes it to the platform. An agent can immediately distinguish this discovery call from the getMyStayFacilities/updateStayFacilities siblings that consume its output.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly prescribes when to call it: 'Call this first if you don't already know the exact group name to pass to getMyStayFacilities/updateStayFacilities.' It names the downstream alternatives and the condition (unknown group name) that selects this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getHelpCenterArticleARead-onlyInspect
Fetch a specific NomadStays Help Center article by its ID. Returns the full article content, title, slug, and categories.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The WordPress post ID of the Help Center article (e.g., '123') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false and destructiveHint=false, so the safety profile is covered. The description adds genuine context beyond that by disclosing the return shape (full article content, title, slug, categories), which matters because there is no output schema. It omits error/not-found behavior, which keeps it out of 5 territory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, with the action and its scope front-loaded before the return-value note. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with full annotation coverage, the description covers what the tool does and what it returns, compensating for the absent output schema. Only the not-found/error path is unaddressed, a minor gap at this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is fully documented in the schema, including the WordPress post ID format and an example. The description only restates 'by its ID' and adds no syntax or constraint detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource ('Fetch a specific NomadStays Help Center article by its ID') and scopes it to a single record, so it is distinguishable from listHelpCenterCategories. It does not, however, name searchHelpCenter, the sibling an agent is most likely to confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by its ID' implies the caller must already have an ID, which hints at the lookup-vs-search split, but the description never states when to use this instead of searchHelpCenter or where IDs come from. Usage is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getMyBusinessProfileARead-onlyInspect
Get the host account's business profile: legal business name, VAT/business registration numbers, whether registered as a business entity. Does NOT include bank or tax-ID details — those are never exposed via MCP. Call this before updateHostBusinessProfile. Requires NOMADSTAYS_MCP_AGENT_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds genuine value beyond that by scoping exclusions ('bank or tax-ID details — never exposed via MCP') and disclosing an auth requirement (NOMADSTAYS_MCP_AGENT_TOKEN). It does not describe response format, but for a single fixed fetch that is minor.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core purpose, followed by the exclusion boundary and then the sequencing/auth notes. Every sentence carries information; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no parameters, the description compensates by naming the fields returned and the fields deliberately withheld, plus the auth prerequisite and call sequencing. Nothing an agent needs to invoke this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric the baseline is 4. There is nothing for the description to clarify about inputs, and none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (Get) plus resource (host account's business profile), with an explicit enumeration of what is returned: legal business name, VAT/business registration numbers, and business-entity status. An agent can distinguish it from sibling readers like getMyStayOrganisationalData without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'Call this before updateHostBusinessProfile,' which tells the agent the sequencing relative to a sibling write tool. It lacks broader when-to-use framing against other getMy* readers, but the sequencing instruction is concrete and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getMyStayContactsARead-onlyInspect
Get a Stay's contact/owner/manager details and social media links: owner name/email/mobile, manager (day-to-day contact person) name/email/mobile, booking email/phone/mobile, host display name, and website/Facebook/Twitter/YouTube/Instagram/TikTok/LinkedIn links. Call this before updateStayContacts so the agent knows current values. Requires NOMADSTAYS_MCP_AGENT_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
| stayId | Yes | The Stay's EntryID (use getMyStays to find it) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered; the description adds the auth requirement (NOMADSTAYS_MCP_AGENT_TOKEN) and the read-before-write role, both of which are real behavioral context. It does not discuss pagination or failure modes, but for a single-record read that is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then the returned fields, then the usage rule and auth note — a sensible order with no filler sentences. The long field enumeration is dense but each item is load-bearing since there is no output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by naming the return fields, plus it covers the single required parameter and the token requirement. An agent has everything needed to call this correctly and understand what comes back.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter, and schema coverage is 100% — the schema itself explains stayId is the EntryID and points to getMyStays. The description adds no syntax, format, or edge-case detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Get a Stay's contact/owner/manager details and social media links') and then enumerates the exact fields returned (owner/manager/booking contacts, host display name, seven social platforms). That enumeration functionally distinguishes it from adjacent members like getMyStayDetail or getMyStayOrganisationalData without needing to name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit sequencing guidance: 'Call this before updateStayContacts so the agent knows current values,' which both names the sibling alternative and states the trigger condition. It stops short of a full when/when-not treatment (e.g., using it purely for read/reporting purposes is not addressed).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getMyStayDetailARead-onlyInspect
Get the current title, description, and listed status for one of your Stays. Call this before updateStayDetail so the agent knows the current values and doesn't accidentally overwrite them. Requires NOMADSTAYS_MCP_AGENT_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
| stayId | Yes | The Stay's EntryID (use getMyStays to find it) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds value beyond them by disclosing the auth requirement (NOMADSTAYS_MCP_AGENT_TOKEN) and the read-before-write workflow rationale. It adds real context rather than restating the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each earning its place: what it returns, when to call it, and the auth prerequisite. The returned content is front-loaded with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only getter with no output schema, the description enumerates the return fields (title, description, listed status), names the auth token, and states the workflow context. That is nearly complete, with the only minor gap being a fuller comparison against sibling getters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the stayId parameter already documents itself as the EntryID with a pointer to getMyStays. The description adds no parameter-level detail, so the baseline 3 for fully covered schemas applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ("Get") plus precise resource ("current title, description, and listed status for one of your Stays"). It is clearly distinguishable from sibling list tool getMyStays and from getStayByID. An agent understands the exact content returned without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the agent to call this before updateStayDetail and explains why (avoiding accidental overwrites), which is strong when-to-use guidance tied to a named sibling. It lacks any when-not-to-use or distinction from getMyStays/getStayByID, so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getMyStayFacilitiesARead-onlyInspect
Get the available options AND current selections for one facility/checkbox group on a Stay — e.g. 'Languages Spoken' returns every language the platform supports plus which ones are currently selected for this Stay. Call getFacilityGroups first if you don't know the exact group name. Common groups: 'General', 'Services', 'Languages Spoken', 'Meal', 'Position', 'Remote Worker'. Requires NOMADSTAYS_MCP_AGENT_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Exact facility group name, e.g. 'Languages Spoken', 'General', 'Services', 'Meal', 'Position', 'Remote Worker' (call getFacilityGroups for the full list) | |
| stayId | Yes | The Stay's EntryID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds genuinely useful context beyond that: the auth token requirement (NOMADSTAYS_MCP_AGENT_TOKEN) and the fact that the response merges platform-wide options with per-Stay selections. No rate-limit or pagination detail, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core behavior and the options-vs-selections distinction, then prerequisites, then examples, then auth. Efficient, though the repeated group-name list overlaps with the schema description and could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by explaining the return shape (all supported languages plus the currently selected ones). With prerequisites, auth requirement and scope all stated, an agent has everything needed to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented, including the group examples and 'EntryID' for stayId. The description largely repeats those examples; its only marginal addition is clarifying that group scopes to a single checkbox group. Baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get the available options AND current selections for one facility/checkbox group on a Stay') and gives a concrete worked example ('Languages Spoken'). The dual-return nature (options + selections) distinguishes it clearly from getFacilityGroups (options only) and updateStayFacilities (mutation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent to getFacilityGroups when the group name is unknown, and lists common group names to reduce that need. It does not, however, contrast against updateStayFacilities or explain what to do with the returned selections, so the 'when not to use' side is thin.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getMyStayOnboardingStatusARead-onlyInspect
Get the Stay's listing-completion scores — the same six 'Listing Completion' cards shown on the Stay dashboard (Stay Details, Availability, Rooms, Packages, Wi-Fi, Operator Information), plus an overall completion percentage. Use this when a host asks how far along they are with onboarding or what's left to finish. Note: Wi-Fi is a test-freshness score (recency of the last speed test), not a speed rating. Operator Information is the same score the owner's dashboard shows, with a missingItems list of labels (e.g. 'Date of Birth', 'Banking Details') — those fields are owner-only and never writable via MCP, so relay the list to the owner. Stay Details is recalculated automatically after every MCP edit to details, organisational data, contacts, facilities or photos. Requires NOMADSTAYS_MCP_AGENT_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
| stayId | Yes | The Stay's EntryID (use getMyStays to find it) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/non-destructive, but the description adds substantial non-obvious context: Wi-Fi is a recency-of-test score rather than a speed rating, Operator Information carries an owner-only missingItems list, Stay Details auto-recalculates after MCP edits to details/contacts/facilities/photos, and the call requires NOMADSTAYS_MCP_AGENT_TOKEN. These are exactly the behavioural traits annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and the enumerated score list before the caveats. The trailing notes are dense but each one prevents a real misinterpretation (Wi-Fi semantics, owner-only fields, recalculation timing), though the passage could be tightened with bullets or shorter clauses.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the return-value burden and does so: six named scores, an overall percentage, and a missingItems label list. It also covers auth requirements and recalculation timing, leaving nothing an agent needs to call and interpret this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema coverage is 100%, with the schema itself explaining that stayId is the EntryID found via getMyStays. The description adds no further parameter syntax or format detail, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get the Stay's listing-completion scores') and enumerates the exact six component scores plus an overall percentage. An agent can distinguish this from getMyStayDetail or getMyStays without opening any schema, since it is explicitly a derived scoring view rather than raw Stay data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete triggering situation: 'Use this when a host asks how far along they are with onboarding or what's left to finish.' That is a clear usage context, but it does not name an alternative tool or state when not to use it (e.g. versus getMyStayDetail for raw field values).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getMyStayOrganisationalDataARead-onlyInspect
Get a Stay's organisational data: address, check-in/out policy, pets/children/parking, cancellation policy, tourism/land-registration numbers. Call this before updateStayOrganisationalData so the agent knows current values. Requires NOMADSTAYS_MCP_AGENT_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
| stayId | Yes | The Stay's EntryID (use getMyStays to find it) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds real non-annotated context: the NOMADSTAYS_MCP_AGENT_TOKEN credential requirement and the fact that the result represents current values to diff against before an update. It says nothing about error behavior (e.g. unknown stayId), which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences: what is returned first (the enumerated data), then the sequencing guidance, then the credential requirement. Every sentence carries distinct information and nothing is repeated from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by enumerating the returned data categories, and it covers invocation prerequisites (token) and the downstream tool it feeds. For a single-parameter read-only fetch, an agent has everything needed to call and interpret it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single required parameter with 100% schema description coverage, and the schema already explains that stayId is the EntryID discoverable via getMyStays. The description never mentions the parameter at all, so it adds no meaning beyond the schema; baseline 3 applies when the schema does all the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (get) plus a named resource (a Stay's organisational data) and an explicit enumeration of the fields returned: address, check-in/out policy, pets/children/parking, cancellation policy, tourism/land-registration numbers. This cleanly separates it from siblings such as getMyStayDetail, getMyStayFacilities, and getMyStayContacts without needing to open any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit workflow condition: call this before updateStayOrganisationalData so the agent knows current values, which names the sibling it complements and the sequencing rationale. It does not state any when-not-to-use case or contrast itself with the other getMyStay* readers, so it falls just short of fully explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getMyStayPackagesARead-onlyInspect
List all pricing packages on one of your Stays, including their full price tiers (days, buy price, sell price, comparison price, listed status). Call this before createStayPackage or updateStayPackage — hosts often forget exactly what packages/pricing they've already set. Requires NOMADSTAYS_MCP_AGENT_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
| stayId | Yes | The Stay's EntryID (use getMyStays to find it) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds the auth requirement (NOMADSTAYS_MCP_AGENT_TOKEN) and enumerates the returned price-tier fields, which is genuine extra context. It does not discuss pagination or result limits, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: what it returns, when to call it, and what auth it needs. Front-loaded with the return content, no filler or restated name/title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-param read tool with no output schema, the description is complete: it names the returned fields, the auth requirement, and the sequencing with the create/update siblings. An agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single stayId parameter is fully documented in the schema (including a pointer to getMyStays). The description only implies the stay scoping with 'on one of your Stays', adding no syntax or format detail beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (pricing packages on one of your Stays) and even enumerates the fields returned (days, buy price, sell price, comparison price, listed status). This clearly separates it from getMyStayDetail, getMyStayRooms, and other sibling getters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly prescribes the call context: 'Call this before createStayPackage or updateStayPackage', naming both sibling alternatives and the motivating reason (hosts forget what they've set). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getMyStayPhotosARead-onlyInspect
Get every current photo for a Stay across all areas (listing gallery, main/hero, workspace/coworking gallery, host), each as a full https:// CDN URL an agent can view directly (not just a filename). Call this before deleteStayPhoto or reorderStayPhotos to see current filenames. Requires NOMADSTAYS_MCP_AGENT_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
| stayId | Yes | The Stay's EntryID (use getMyStays to find it) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so safety is covered; the description goes further by disclosing the return format (viewable CDN URLs, not filenames) and the token requirement. It stops short of describing ordering, counts, or behavior when a Stay has no photos, so it is strong but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: purpose and scope first, followed by the sequencing guidance and the auth constraint. Every sentence adds information an agent would otherwise have to guess, and nothing is repeated from the annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by characterizing the return value as full CDN URLs and by covering the auth prerequisite and pre-mutation use case. Minor gaps remain around empty-result behavior and whether results are grouped by area, but an agent has enough to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is fully documented in-schema ('The Stay's EntryID (use getMyStays to find it)'), so the description adds only an indirect pointer to its own resource scope. Baseline 3 applies when the schema already carries parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get every current photo for a Stay') and enumerates the areas covered (listing gallery, hero, workspace gallery, host), which clearly separates it from siblings like getMyStayDetail or getMyStayRooms. It also specifies the return form (full https:// CDN URLs rather than filenames), so an agent knows exactly what it gets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs 'Call this before deleteStayPhoto or reorderStayPhotos to see current filenames,' naming the sibling tools and the sequencing condition that selects this tool. It adds the auth prerequisite (NOMADSTAYS_MCP_AGENT_TOKEN), leaving little to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getMyStayRoomsARead-onlyInspect
List all rooms currently configured on one of your Stays, including bed setup, occupancy, facilities (resolved to names, not just IDs), and every room/workspace photo as a viewable CDN URL. Call this before createStayRoom, updateStayRoom, deleteStayRoom, deleteRoomPhoto, or reorderRoomPhotos so the agent can show current values or find the right roomId/fileName. Requires NOMADSTAYS_MCP_AGENT_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
| stayId | Yes | The Stay's EntryID (use getMyStays to find it) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false. The description goes beyond them by disclosing that facilities are resolved to names rather than raw IDs, photos are returned as viewable CDN URLs, and that an agent token is required. It does not discuss pagination or result limits, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences, front-loaded with what is returned, followed by the when-to-use routing. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so (rooms, bed setup, occupancy, facilities, photo URLs). The auth prerequisite is also stated, so an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single stayId parameter is already documented with the pointer to getMyStays. The description adds no format or constraint detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (all rooms configured on one of your Stays) and enumerates the returned payload (bed setup, occupancy, facilities, photos). It is clearly distinguishable from sibling reads like getMyStayDetail or getMyStayFacilities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to call this before createStayRoom, updateStayRoom, deleteStayRoom, deleteRoomPhoto, and reorderRoomPhotos, and gives the reason (show current values, find the right roomId/fileName). This names alternatives and the condition that selects this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getMyStaysARead-onlyInspect
List all Stays owned by the account bound to the MCP agent token. Returns stayId, title, and listed status for each — use this to find a stayId before calling any other owner-scoped tool. Requires NOMADSTAYS_MCP_AGENT_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds meaningful behavioral context beyond the annotations by stating the required NOMADSTAYS_MCP_AGENT_TOKEN and listing the returned fields (stayId, title, listed status). It does not disclose pagination, sorting, or rate limits, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary purpose. Every sentence carries useful information: ownership scope, return fields, usage guidance, and authentication requirement. There is no redundancy or waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a zero-parameter, read-only list tool with no output schema but rich annotations, the description covers everything needed: what it returns, why to use it, and the authentication requirement. Return value semantics are explained inline, compensating for the missing output schema. No critical call-time information is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric the baseline is 4. There are no parameter semantics to clarify, and the description correctly omits parameter details. No additional meaning beyond the empty schema is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: list all Stays owned by the account bound to the MCP agent token. It clearly differentiates from public search tools like getStaysByCountry and from the singular detail tool getMyStayDetail by emphasizing ownership and the account context. It also names the return fields, making the purpose concrete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states the primary usage: use this to find a stayId before calling any other owner-scoped tool. This gives clear context for invocation and workflow position. However, it does not name a specific alternative tool or state when not to use it, so it falls short of the 5-level example that names the alternative and exclusion condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getProductInfoARead-onlyInspect
Look up a Nomad Stays product's price and purchasability — currently only product 8, the Stay Application fee (EUR 39). Returns isWaivedForCaller: true if the caller is already a Stay Partner re-applying, in which case there's nothing to pay and purchaseProduct will process the waiver automatically. Requires NOMADSTAYS_MCP_AGENT_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
| productId | Yes | The product's EntryID — use 8 for the Stay Application fee |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/destructive annotations, the description discloses the single-supported-product limitation, the fixed price (EUR 39), the meaning of the isWaivedForCaller return value, the automatic waiver behavior, and the required NOMADSTAYS_MCP_AGENT_TOKEN. That is substantial behavioral context the annotations do not carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with zero filler; the highest-value fact (only product 8 is supported) and the return-value semantics are front-loaded. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations covering the read-only safety profile and no output schema present, the description fully compensates by explaining the return value, the waiver outcome, the product limitation, and the auth requirement. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already tells the caller to use 8 for the Stay Application fee. The description only adds the EUR 39 value, which is useful but marginal beyond the structured field, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Look up a Nomad Stays product's price and purchasability') and narrows scope immediately ('currently only product 8, the Stay Application fee'). An agent can distinguish this from sibling read tools like getPurchaseStatus and from the purchaseProduct mutation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description frames the follow-up path clearly: if isWaivedForCaller is true, 'there's nothing to pay and purchaseProduct will process the waiver automatically', which routes the agent to the correct next tool. It stops short of an explicit when-to-use/when-not statement or naming alternative tools directly, but the context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getPurchaseStatusARead-onlyInspect
Check whether a purchase has been paid. Only ever reports 'paid' after a fresh server-side check against the payment provider — never trust the member's own claim that they've paid, always poll this instead. Possible statuses: pending, paid, failed, waived. Requires NOMADSTAYS_MCP_AGENT_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
| saleId | Yes | The saleId returned by purchaseProduct |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a safe read (readOnlyHint=true, destructiveHint=false), but the description adds real value beyond them: it discloses that 'paid' is only ever returned after a fresh server-side verification, lists the four possible statuses, and names the required NOMADSTAYS_MCP_AGENT_TOKEN. That auth requirement and the freshness guarantee are not in the annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, purpose front-loaded, followed by the usage rule and the enumerated statuses plus auth requirement. No filler; every sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by enumerating the possible return statuses. The auth dependency is stated and the verification behavior is explained, so an agent has everything needed to call and interpret this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single saleId parameter is documented in the schema as 'the saleId returned by purchaseProduct'. The description adds nothing beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Check whether a purchase has been paid.' The status enum (pending, paid, failed, waived) further pins down scope. It doesn't explicitly distinguish itself from the similarly-named getBookingStatus sibling, so the differentiation is only implicit in the noun 'purchase' vs 'booking'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a strong when-to-use rule: never trust the member's own claim of payment, always poll this instead. This is actionable guidance an agent can follow. It does not, however, address exclusions or contrast with the getBookingStatus sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getRoomAmenitiesARead-onlyInspect
Get comprehensive list of all facilities and amenities for a specific room, including WiFi metrics (download/upload speed, jitter). Returns room details, all facilities, and network performance data.
| Name | Required | Description | Default |
|---|---|---|---|
| roomId | Yes | The unique identifier of the room (tbStaysRoom.EntryID) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds useful return content (room details, facilities, WiFi download/upload and jitter) but does not disclose operational behavior such as rate limits, authentication needs, or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose and scope. The second sentence slightly restates that facilities are returned, but overall it is efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description carries the burden of describing return values; it does so at a high level (room details, all facilities, network performance data, WiFi metrics). It is sufficient for a simple read tool, though it could specify the return shape more concretely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter roomId is fully documented in the schema as the unique identifier (tbStaysRoom.EntryID). The description adds no further semantic detail about the parameter, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('facilities and amenities') scoped to 'a specific room', and explicitly includes WiFi metrics. This differentiates it from sibling getAllAmenities (which lacks room scope) and getMyStayFacilities (which is stay-scoped rather than room-scoped).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an implicit usage condition ('for a specific room'), but does not state when to prefer it over getAllAmenities, getRoomFacilityOptions, or getMyStayFacilities, nor any prerequisites. No explicit when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getRoomAvailabilityARead-onlyInspect
Check a specific room's availability for each night in a date range. Returns availability status (available/not available) for each night.
| Name | Required | Description | Default |
|---|---|---|---|
| roomId | Yes | The unique identifier of the room (tbStaysRoom.EntryID) | |
| checkIn | Yes | Check-in date in ISO format (YYYY-MM-DD) | |
| checkOut | Yes | Check-out date in ISO format (YYYY-MM-DD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered without prose. The description adds real value beyond them by disclosing the return granularity — a per-night available/not-available status — which is important since no output schema exists. It still doesn't say whether results reflect live inventory or cached data, which limits it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero redundancy: the first states the operation and scope, the second states the return value. Front-loaded and appropriately sized for a simple three-parameter read.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, three-parameter tool with full schema coverage and no output schema, the description supplies both the query semantics and the response shape, which is what an agent needs to call and interpret it. The remaining gap is boundary context — how it differs from the other availability tools in this large sibling set.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (roomId, checkIn, checkOut) are already documented with format details, establishing the baseline of 3. The description does not add anything the schema lacks, such as whether checkOut night is included in the per-night list or how check-in/check-out ordering is validated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Check'), a specific resource ('a specific room'), and a precise scope ('each night in a date range'), plus the return shape (available/not available per night). That is far more specific than a generic 'get availability'. It does not name the related siblings it must be distinguished from (checkStayAvailability, getAvailabilityByMonth, hasAvailabilityInWindow, findNearestAvailability), so an agent has to infer the boundary itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The per-night granularity and single-room scope imply the use case — you call it when you need night-by-night availability for one room rather than a whole-stay or month-level answer. However, there is no explicit statement of when to use this versus the several sibling availability tools, and no prerequisites (e.g. whether roomId must be a valid stay room).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getRoomFacilityOptionsARead-onlyInspect
List every room-level amenity/facility option available (roomFacilityFk in createStayRoom/updateStayRoom) — e.g. Wi-Fi, Air Conditioning, Private Bathroom. Wi-Fi is mandatory and always included even if not explicitly selected. Requires NOMADSTAYS_MCP_AGENT_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds genuinely non-obvious behavior — Wi-Fi is mandatory and always included even when not explicitly selected — plus the NOMADSTAYS_MCP_AGENT_TOKEN auth requirement, both of which affect how an agent interprets and reuses the result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight clauses: what is listed, the Wi-Fi caveat, the auth requirement. Front-loaded with the purpose, zero filler, and every sentence carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still characterizes the return set (every room-level option, with examples) and flags the mandatory Wi-Fi inclusion, and it notes auth. It stops just short of full completeness by not clarifying its relationship to the closely named sibling option-listing tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4; there is nothing for the description to disambiguate. It does usefully name the consumer field (roomFacilityFk) that the returned option identifiers feed into, which is extra semantic value beyond an empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource (list every room-level amenity/facility option) and anchors it to a concrete use site — the roomFacilityFk field in createStayRoom/updateStayRoom — plus example values. An agent can distinguish it from getAllAmenities, getRoomAmenities, getFacilityGroups and getStayTypeOptions without opening any schema, even though it doesn't name those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: by tying the output to roomFacilityFk in createStayRoom/updateStayRoom, it signals this is the lookup to run before writing room data. However, with near-identical siblings (getRoomAmenities, getAllAmenities, getFacilityGroups) no when-to-use-this-vs-that guidance is given, leaving the agent to guess which option-list is the right one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getRoomTypeOptionsARead-onlyInspect
List valid room types for a specific Stay's rooms (roomTypeFK in createStayRoom/updateStayRoom). Valid values depend on the Stay: boutique Stays choose from a fixed boutique type range; standard Stays are restricted to types already used on one of their own rooms. Requires NOMADSTAYS_MCP_AGENT_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
| stayId | Yes | The Stay's EntryID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds real behavioral context beyond that: the valid value set is conditional on the Stay (boutique fixed range vs. standard restricted to already-used types) and it discloses the required NOMADSTAYS_MCP_AGENT_TOKEN, which isn't in structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, all front-loaded and purposeful: purpose, dependency rule, auth requirement. The middle sentence is dense but carries genuinely useful domain logic rather than redundant phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the description makes clear the return is the set of valid room-type values, including the conditional logic that determines them. It is complete enough to invoke correctly; only minor detail on the returned structure is absent, which is acceptable for an options-list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter, and schema description coverage is 100% (stayId is documented as 'The Stay's EntryID'). The description adds no format or syntax detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (valid room types for a specific Stay's rooms) and ties the output to the roomTypeFK consumed by createStayRoom/updateStayRoom. This clearly separates it from the sibling getStayTypeOptions, which deals with Stay types rather than room types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical naming roomTypeFK in createStayRoom/updateStayRoom effectively tells the agent when this lookup is needed. It gives clear context but does not explicitly name alternatives or exclusion conditions among the many other *Options tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getStayApplicationARead-onlyInspect
Get the full current state of one Stay Application, including a nextAction hint and (if incomplete) a missingFields list naming exactly which required fields are still empty. Requires NOMADSTAYS_MCP_AGENT_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
| applicationId | Yes | The application's ID (use listStayApplications to find it) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, closed-world), but the description adds two things they cannot: the NOMADSTAYS_MCP_AGENT_TOKEN auth requirement and the conditional return detail (nextAction hint, missingFields only when incomplete). That is real added context, though it says nothing about error behavior for an unknown or unauthorized applicationId.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero padding: the purpose and payload lead, the auth prerequisite follows. Everything is front-loaded and each clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by naming the notable return fields (nextAction, missingFields). Combined with the auth requirement and a fully documented single parameter, an agent has what it needs to call this correctly; only edge-case failure behavior is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema description coverage is 100%, so the schema already explains applicationId and where to get it. The description adds no format, range, or validation detail beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get the full current state of one Stay Application') and scopes it to a single record, which cleanly separates it from listStayApplications and the save/submit siblings. It even previews the payload shape (nextAction hint, missingFields), so an agent knows exactly what it retrieves.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: fetching one application by ID is the natural complement to listing, but the description never says when to prefer this over listStayApplications or the getCoworkingApplication/getExperienceApplication variants. The pointer to listStayApplications for ID discovery lives in the schema, not the description, so routing guidance here is only inferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getStayByIDBRead-onlyInspect
Returns full details for a single stay. The id parameter searches both EntryId and StayId fields.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Stay identifier (searches the EntryId field) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds one useful behavioral fact—that the id is matched against two internal fields—but says nothing about return shape, pagination, or what happens when no match is found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler, and the core purpose is front-loaded. The second sentence slightly overlaps the parameter schema description rather than adding fully new information, keeping it just under a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with annotations covering safety and no output schema, the description is nearly sufficient. It could note what happens on a missing record, but nothing critical to invoking it correctly is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description goes beyond the schema by noting the id also matches StayId in addition to EntryId, which is meaningful semantics for the parameter (though it is mildly inconsistent with the schema's own 'searches the EntryId field' text).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Returns full details for a single stay.' An agent understands the operation clearly. It does not, however, distinguish itself from close siblings like getMyStayDetail or getStaysBy* lookups, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no prerequisites, and no mention of alternatives among the many siblings (getMyStayDetail, getStaysByCountry, etc.). Usage is only implied by the name and verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getStayCountsByCountryARead-onlyInspect
Returns how many stays NomadStays has in each country, most first. Each row has the country name, 2-letter code, continent, 'stays' (live public listings) and 'bookableNow' (those currently listed for booking). Use this for questions like 'which countries have the most stays', 'how many stays do you have in Spain' or 'where do you have stays'. Optionally filter by continent.
| Name | Required | Description | Default |
|---|---|---|---|
| continent | No | Optional continent name or partial match (e.g., 'Europe', 'Asia') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/openWorldHint/destructiveHint, so safety is covered. Beyond that the description adds real behavioral context: result ordering (most first), exact row fields, and precise definitions of 'stays' (live public listings) vs 'bookableNow' (currently listed for booking). It does not state pagination or result-size limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core behavior, then row fields, then usage examples. Every sentence carries information; the example question list is slightly verbose but justified for routing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description enumerates the returned columns and defines both metrics, so an agent knows exactly what it gets back. Combined with a single optional parameter fully covered by the schema, nothing needed for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the continent parameter is already documented. The description reinforces it as optional and implies the filter applies per country, but adds no syntax or format detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource+aggregation ('how many stays ... in each country') and ordering ('most first'), clearly distinguishing it from the listing sibling getStaysByCountry. An agent can tell this is a count/aggregation tool without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete example questions ('which countries have the most stays', 'how many stays do you have in Spain') that anchor when to use it, plus the optional continent filter condition. It does not explicitly name the alternative (e.g., getStaysByCountry for listing actual stays), so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getStaysByAmenitiesARead-onlyInspect
Find all stays that have specific amenities. Searches both stay-level amenities (referenced by tbStayFacilities) and room-level amenities (referenced by tbRoomFacilities). Use matchType 'any' to find stays with at least one amenity, or 'all' to find stays with all requested amenities. Can optionally filter by minimum WiFi download speed.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default: 25) | |
| amenities | Yes | Array of amenity names to search for (e.g., ['WiFi', 'Air Conditioning', 'Pool']). Use getAllAmenities to see all available amenities. | |
| matchType | No | OPTIONAL: 'any' (default) finds stays with at least one amenity, 'all' finds stays with all amenities | |
| minWifiSpeed | No | OPTIONAL: Minimum WiFi download speed in Mbps (default: 0). Only returns stays with WiFi speed at or above this threshold. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds genuinely useful behavioral context by disclosing that matching spans two separate amenity sources (tbStayFacilities and tbRoomFacilities), which tells the agent why some amenity hits won't appear on the stay record itself.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the core purpose and then the matching-model detail, with no filler. Slightly more verbose than needed given the schema repeats the matchType and WiFi-speed semantics.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A read-only search tool with a fully documented schema and no output schema, so return-shape detail isn't required. It covers purpose, matching mode, and the optional numeric filter adequately; only minor gaps remain, such as case-sensitivity of amenity names and how limit interacts with result truncation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter including matchType's enum and minWifiSpeed's Mbps unit is already documented in the schema. The description's restatement of matchType semantics adds confirmation but no new meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Find all stays that have specific amenities') and immediately scopes it to both stay-level and room-level amenity sources. This clearly separates it from pure-location siblings like getStaysByLocation and the WiFi-only getStaysByWiFiSpeed, though it never names any sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the matchType choice ('any' vs 'all') and the optional WiFi speed filter, which is real usage guidance. However it gives no when-to-use-this-vs-alternative routing, e.g. why an agent would pick this over getStaysByWiFiSpeed or getStaysByLifestyle, and no exclusions or prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getStaysByBudgetARead-onlyInspect
Search for stays that fit within a budget for a given duration. Country is OPTIONAL - can search globally or filter by specific country. Perfect for queries like 'Find me somewhere to stay for 1 month under EUR 1000' or 'Find me a place in Spain for 1 month under EUR 1000'.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default: 15) | |
| currency | Yes | Currency code (e.g., 'EUR', 'USD', 'GBP') | |
| maxPrice | Yes | Maximum price for the entire duration (e.g., 1000 for EUR 1000) | |
| continent | No | OPTIONAL: Continent name (e.g., 'Europe', 'Asia', 'Africa'). Filters results to stays in countries on this continent. If omitted, searches all continents globally. | |
| checkInDate | No | OPTIONAL: Check-in date. Can be a full date (e.g., '2026-05-15'), a month name (e.g., 'May' ? uses May 1st), or omit for today (2026-01-19) | |
| countryCode | No | OPTIONAL: 2-letter country code (e.g., 'ES', 'PT') or country name (e.g., 'Spain'). If omitted, searches all countries globally. | |
| durationDays | Yes | Duration of stay in days (e.g., 30 for 1 month, 90 for 3 months) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false and destructiveHint=false, so the safety profile is covered. The description adds only the country-optional/global-search note, which is largely duplicated in the schema, and says nothing about result ordering, pagination, or the limit behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core purpose and examples. The middle sentence about the optional country overlaps with the schema but is short and does not bloat the definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only search tool with a fully documented schema and safety annotations, the definition covers purpose and example usage adequately. It omits any hint about return shape or ordering (no output schema exists), which leaves a modest gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all seven parameters are already documented in the schema. The description restates the optional-country behavior but adds no format, syntax, or constraint details beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and resource (stays) constrained by budget and duration, which is a distinct filter axis from siblings like getStaysByAmenities or getStaysByCountry. It does not explicitly name or contrast any sibling, but the budget/duration scope makes it readily distinguishable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Two concrete example queries ('somewhere to stay for 1 month under EUR 1000' and 'a place in Spain for 1 month under EUR 1000') give clear context for when to reach for this tool. It stops short of naming alternatives or stating when NOT to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getStaysByContinentBRead-onlyInspect
Returns stays from the NomadStays database filtered by continent. Search by continent name (e.g., 'Europe', 'Asia', 'Africa', 'North America', 'South America', 'Oceania')
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default: 15) | |
| continent | Yes | Continent name or partial match (e.g., 'Europe', 'Asia', 'Africa') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, covering the full safety profile. The description adds essentially nothing beyond that: it does not describe result ordering, how partial matches behave, pagination, or what happens when the default limit of 15 is exceeded. A simple read tool with complete annotations needs little, but this adds no new behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler; the core action is front-loaded in the first sentence and the parenthetical examples are compact. Nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read tool with 100% schema coverage and no output schema, the description is close to sufficient: the agent knows the source, the filter, and the input shape. Only the result shape (ordering, typical payload size) is left implicit, which is a minor gap given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (continent and limit) are already fully documented in the schema, including the default of 15. The description's continent examples duplicate the schema's examples rather than adding format constraints or matching semantics. Baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Returns stays from the NomadStays database filtered by continent'), so the agent knows exactly what it retrieves. However, it never distinguishes itself from the many sibling filters (getStaysByCountry, getStaysByLocation, getStaysByBudget), so the agent must infer which filter applies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Search by continent name' implies the usage context and the examples ('Europe', 'Asia', 'Africa') show expected input, but there is no stated when-to-use or when-not-to-use guidance relative to the sibling country/location/budget filters. Usage is implied rather than explained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getStaysByCountryBRead-onlyInspect
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 | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default: 15) | |
| countrycode | Yes | 2-letter country code (e.g., 'MA', 'US') or partial country name (e.g., 'Antigua') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds that results come from the NomadStays database and that name matching is partial ('Antigua' matches 'Antigua and Barbuda'), which is mildly useful behavioral context, but nothing about result ordering or pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action and followed by the input format. No filler, though the parenthetical examples duplicate the schema descriptions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read-only lookup with no output schema, the description covers what is needed to invoke it, but omits return-shape expectations, result ordering, and whether results are paginated beyond the limit parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters (countrycode, limit) are already documented in the schema, including the default of 15 and the partial-name example. The description's examples restate what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Returns stays from the NomadStays database') and the scoping criterion (country code or name). It is clearly distinguishable from siblings like getStaysByContinent or getStaysByAmenities, though the description never explicitly names the alternative facets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the description's emphasis on searching by country, but there is no explicit when-to-use guidance, no mention of when to prefer getStaysByLocation/getStaysByContinent, and no stated prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getStaysByLifestyleBRead-onlyInspect
Returns stays from the NomadStays database filtered by lifestyle/genre category (e.g., 'Digital Nomad', 'Beach Life', 'City Living', 'Mountain Retreat'). Each stay can belong to multiple lifestyle categories.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default: 15) | |
| lifestyle | Yes | Lifestyle/genre category name or partial match (e.g., 'Digital Nomad', 'Beach', 'City'). Use getAllLifestyles tool to see all available categories. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so safety is covered. The description adds one genuine behavioral fact — a stay can belong to multiple lifestyle categories — but says nothing about result ordering, pagination, or what happens when a category matches nothing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the verb and resource, with no filler or repetition of the tool name. The second sentence is brief and informative, though marginally less essential than the first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only 2 fully documented params and annotations carrying the safety profile, the definition is nearly self-sufficient. However, there is no output schema, so the description should say a bit more about the shape of the returned stays (fields, ordering, paging) than the bare phrase 'Returns stays'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: the schema already documents the default limit of 15 and the partial-match semantics of 'lifestyle', and even points to getAllLifestyles. The description only restates the same example categories, adding no syntax or matching detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Returns), resource (stays from the NomadStays database), and the exact filter facet (lifestyle/genre category) with concrete examples. The lifestyle facet inherently distinguishes it from the many getStaysBy* siblings (byAmenities, byBudget, byCountry, byWiFiSpeed), so an agent can route correctly without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use or when-not-to-use guidance and names no alternative among the getStaysBy* family. The only routing hint ('Use getAllLifestyles tool to see all available categories') lives in the input schema, not the description, so usage must be inferred from the purpose alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getStaysByLocationARead-onlyInspect
Returns stays from the NomadStays database that match a location search term. Searches across City, State, location_name, location_country, and location_description fields. Use this for flexible location searches (e.g., 'Paris', 'California', 'Beach', 'Mountain')
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default: 15) | |
| location | Yes | Location search term to match against City, State, location_name, location_country, or location_description (e.g., 'Paris', 'California', 'Beach', 'Mountain') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds genuinely useful behavior context by disclosing the exact fields matched (City, State, location_name, location_country, location_description), but says nothing about pagination, result ordering, or behavior when no match is found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with what the tool returns, then the searched fields, then the usage cue. Every clause earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only search with no output schema, the definition covers purpose, fields searched, and usage context. What is missing (return shape, ordering, empty-result handling) is minor for this tool class given the annotations already carry the safety profile.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented in the schema, including the same example values. The description's mention of matched fields largely duplicates the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Returns stays ... that match a location search term') and names the five fields searched. It is clearly distinguishable from the structured siblings (getStaysByCountry, getStaysByContinent) via the 'flexible location searches' framing, though it never names an alternative directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use directive ('Use this for flexible location searches') with concrete examples spanning city, region, and theme terms. It does not state when NOT to use it or route to the more specific sibling tools, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getStaysByWiFiSpeedARead-onlyInspect
Find all stays with WiFi download speed greater than 10Mbps, listed and not suspended.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default: 15) | |
| minWiFiDownloadSpeed | No | Minimum WiFi download speed in Mbps (default: 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description usefully adds that results are limited to 'listed and not suspended' stays, but says nothing about return shape or pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler, and the scope qualifier ('listed and not suspended') is included efficiently. It is appropriately sized, though it is terse enough that a little more routing context could have been added without bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-parameter, read-only list tool with a fully documented schema and no output schema, the description covers the essential scope. The main gap is the absence of guidance on what the results contain or how many, though the limit parameter gestures at result sizing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are fully documented by the schema; the description's mention of '10Mbps' merely restates the schema's default for minWiFiDownloadSpeed. It adds no syntax or format detail beyond structured data, making the 3 baseline correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Find) and resource (stays) with an explicit filter criterion (WiFi download speed greater than 10Mbps), which clearly separates it from siblings like getStaysByAmenities or getStaysByBudget. It does not explicitly name those siblings, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the filter semantics — an agent can infer it is for speed-based stay discovery — but the description never states when to prefer this over getStaysByAmenities, getStaysByBudget, or getStaysByLocation, nor any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getStayTypeOptionsARead-onlyInspect
List valid values for a Stay's 'Main Accommodation Type' (stayTypeId in updateStayOrganisationalData). Requires NOMADSTAYS_MCP_AGENT_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds an auth prerequisite (NOMADSTAYS_MCP_AGENT_TOKEN) that annotations do not express, which is genuinely useful; it stops short of describing the returned value shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with the output meaning front-loaded, followed by the auth requirement. Every clause earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-param lookup an agent mainly needs to know what the list is for, which the description supplies by naming the target parameter. It does not describe the option payload (e.g. id/label pairs) and there is no output schema, a minor gap for an option-listing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline is 4. The description correctly redirects the agent to where these values are consumed rather than describing non-existent inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List valid values for a Stay's Main Accommodation Type') and explicitly ties the output to the consuming parameter (stayTypeId in updateStayOrganisationalData). This lets an agent distinguish it from the many other *Options siblings without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies the usage context by naming updateStayOrganisationalData as the consumer, so an agent knows to call this before setting stayTypeId. There is no explicit when-not-to-use guidance or comparison against other option tools (e.g. getRoomTypeOptions), but the intended context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hasAvailabilityInWindowARead-onlyInspect
Efficiently checks whether a stay has ANY open booking window of a minimum length within a date range, without checking every single day. Use this to filter search results down to stays with real availability somewhere in the near future (e.g. 'available at all in the next 6 months for a month-long stay'), instead of calling checkStayAvailability repeatedly for individual dates.
| Name | Required | Description | Default |
|---|---|---|---|
| stayId | Yes | The unique identifier of the stay | |
| fromDate | Yes | Start of the search window, ISO format (YYYY-MM-DD). Usually today's date. | |
| windowDays | No | How many days forward from fromDate to search (default: 180, i.e. 6 months) | |
| minLengthOfStay | Yes | Minimum length of stay in days required (e.g. 30 for a month-long stay) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and destructiveHint, so the safety profile is covered. The description adds useful behavioral context: it efficiently finds ANY qualifying window without checking every day, which clarifies the algorithm and result semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is two tight sentences with the core purpose and the key alternative front-loaded. Every sentence earns its place and there is no redundant text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only availability check with no output schema, the description gives enough context to invoke it correctly and interpret the result as a yes/no availability test. It could explicitly state the return shape, but the annotations cover the safety profile and the use case is clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all four parameters. The description reinforces the relationship between date range and minimum length of stay via an example, but adds no new parameter syntax or format details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it checks whether a stay has any open booking window of a minimum length within a date range. It clearly distinguishes itself from checking individual dates via checkStayAvailability.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says to use this to filter search results to stays with real availability in the near future, gives a concrete example, and names the alternative it replaces: repeated calls to checkStayAvailability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listCoworkingApplicationsARead-onlyInspect
List the caller's Coworking Applications (draft and submitted), each with a nextAction hint (provide_coworking_details, submit, awaiting_review, or accepted). Coworking has no Application Fee, so unlike Stay/Experience there is no pay_application_fee step. Call this to find an in-progress application's applicationId before resuming it. Requires NOMADSTAYS_MCP_AGENT_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuine behavioral context beyond them: the draft/submitted states returned, the four possible nextAction values, the absence of a pay_application_fee step, and the required NOMADSTAYS_MCP_AGENT_TOKEN auth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and return shape, then the usage rule, then the auth requirement. The fee-comparison sentence is slightly tangential but still earns its place by preempting a wrong assumption about a payment step.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, yet the description describes what is returned (applications with a nextAction hint and its enumerated values) and the auth prerequisite. For a no-parameter read tool, nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. No misuse risk from undocumented inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (caller's Coworking Applications), and scopes it to draft and submitted states with the returned nextAction hint enumerated. It is readily distinguishable from getCoworkingApplication (singular fetch) and the listExperience/StayApplications siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete when-to-use rule: call this to find an in-progress application's applicationId before resuming it. It does not explicitly name an alternative tool or state when not to use it, but the retrieval-before-resume framing provides clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listExperienceApplicationsARead-onlyInspect
List the caller's Experience Applications (draft and submitted), each with a nextAction hint telling you what's needed next (provide_applicant_details, provide_experience_details, pay_application_fee, submit, awaiting_review, or accepted). Call this to find an in-progress application's applicationId before resuming it. Requires NOMADSTAYS_MCP_AGENT_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, non-destructive, closed-world behavior, so the bar is lower. The description adds real value beyond them: the draft/submitted scope, the enumerated nextAction hints returned, and the required NOMADSTAYS_MCP_AGENT_TOKEN auth, though it says nothing about pagination or result volume.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the resource and scope, then the return hints, then the actionable usage tip and the auth requirement. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description usefully compensates by enumerating the nextAction values an agent will receive. The only remaining omission is result size/pagination behavior, which is minor for a caller-scoped list.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so per the rubric the baseline is 4. There is nothing for the description to disambiguate; the 100% schema coverage is vacuous here but no gap is left open.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List the caller's Experience Applications') and scopes it to drafts and submitted, which cleanly separates it from sibling listStayApplications/listCoworkingApplications and from getExperienceApplication.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear when-to-use: 'Call this to find an in-progress application's applicationId before resuming it.' It does not explicitly name the alternative (getExperienceApplication) for fetching a single known application, so it stops short of full when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listHelpCenterCategoriesARead-onlyInspect
List all available NomadStays Help Center categories. Returns category ID, name, slug, description, and article count for each category.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds real value beyond that by disclosing the returned fields, which matters because no output schema exists; it does not mention pagination or result-size limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, purpose front-loaded in the first clause and return shape in the second. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless, read-only listing tool with annotations covering safety and no output schema, the description supplies everything needed: what is listed, that it is exhaustive, and what each item contains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. There is nothing for the description to clarify beyond confirming that the call is unfiltered and returns all categories.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (List) plus resource (NomadStays Help Center categories), and it enumerates the fields returned, so an agent immediately knows what it gets. It never names a sibling such as searchHelpCenter or getHelpCenterArticle, so differentiation is implied by the resource rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no reference to the alternative help-center tools. The agent must infer that this is the browsing entry point and that searchHelpCenter/getHelpCenterArticle cover lookup and article retrieval.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listMyBookingsARead-onlyInspect
List all Stay bookings owned by the caller's own account, most recent first, with each one's current status. Each booking includes needsAction: true if it's still unpaid, with a ready-to-use checkoutUrl — call this proactively (e.g. at the start of a session, or when the member asks what's pending) and surface any needsAction bookings to the member, since there is no other way for them to be notified of an incomplete booking through this connection. Requires NOMADSTAYS_MCP_AGENT_TOKEN with the 'bookings' scope.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered; beyond that the description adds auth requirements (NOMADSTAYS_MCP_AGENT_TOKEN with 'bookings' scope) and return-field behavior (needsAction, ready-to-use checkoutUrl). With no output schema, disclosing those return semantics carries real load.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, purpose and scope front-loaded, and every clause adds actionable information — output fields, proactive trigger, justification, and auth prerequisite. No filler or repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema tool, the description covers scope, ordering, returned fields, the required token and scope, and the expected agent behavior on needsAction bookings. Nothing an agent needs to call and act on this tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so per the baseline there is nothing the description needs to disambiguate. It correctly adds no parameter prose, keeping the payload clean.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource with explicit scope and ordering: bookings owned by the caller's own account, most recent first, with current status. This cleanly separates it from siblings like getMyStays (stays, not bookings) and getBookingStatus (a single booking's status).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states exactly when to call it (proactively at the start of a session, or when the member asks what's pending) and why the proactive call matters — there is no other notification path for an incomplete booking over this connection. That is explicit when-to-use guidance plus a rationale, not just implied context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listStayApplicationsARead-onlyInspect
List the caller's Stay Applications (draft and submitted), each with a nextAction hint telling you what's needed next (provide_applicant_details, provide_property_details, pay_application_fee, submit, awaiting_review, or accepted). Call this to find an in-progress application's applicationId before resuming it. Requires NOMADSTAYS_MCP_AGENT_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=true, destructive=false, openWorld=false, so the safety profile is covered. The description adds value beyond that by disclosing the auth requirement (NOMADSTAYS_MCP_AGENT_TOKEN) and the semantic meaning of the returned nextAction values, which the annotations do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences: verb+scope first, then the routing use-case, then the auth prerequisite. The nextAction enumeration is long but earns its place by describing the returned content. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description carries the burden of describing returns and does so via the nextAction enumeration and applicationId reference, plus the auth note. It omits ordering/pagination details, but for a no-parameter list tool it is substantially complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the baseline is 4 per the rubric. There is nothing for the description to clarify; it correctly says nothing about inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') plus resource ('caller's Stay Applications') with scope ('draft and submitted') and content ('each with a nextAction hint'). The 'Stay Applications' resource naming inherently separates it from listCoworkingApplications/listExperienceApplications and from the singular getStayApplication.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit condition: 'Call this to find an in-progress application's applicationId before resuming it.' That is clear guidance for the primary use case, but it names no alternatives (e.g. getStayApplication for a known ID) and states no when-not conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
purchaseProductAInspect
Start a purchase of a Nomad Stays product on the caller's own behalf. If the caller already qualifies for a waiver (e.g. an existing Stay Partner re-applying), this resolves immediately with no payment step and returns status 'waived'. Otherwise it returns a checkoutUrl hosted on nomadstays.com — you must hand this URL to the member and ask them to open it in their own browser and pay; you cannot complete payment on their behalf. Poll getPurchaseStatus with the returned saleId afterwards to find out when it's actually paid. Requires NOMADSTAYS_MCP_AGENT_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
| productId | Yes | The product's EntryID — use 8 for the Stay Application fee | |
| applicationId | No | Optional: if this purchase is paying a Stay Application's fee, pass its applicationId (from createStayApplication) so the payment is applied back to that application automatically once paid |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations establish readOnlyHint=false (a mutation) and destructiveHint=false; the description adds substantial context beyond that, including the waiver short-circuit, the returned checkoutUrl and saleId, the inability to pay on the member's behalf, and the required NOMADSTAYS_MCP_AGENT_TOKEN. It does not contradict openWorldHint=false since the checkout URL is hosted on nomadstays.com itself.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences with the primary action front-loaded, then waiver branch, then payment mechanics, then follow-up. No filler; every sentence carries operational weight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by describing the possible returns (waived status, checkoutUrl, saleId) and the auth requirement. It is nearly complete for a purchase-initiation tool, though explicit error/failure behavior is unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both productId and applicationId are already well documented in the schema. The description adds no syntax or format detail beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
'Start a purchase of a Nomad Stays product on the caller's own behalf' gives a specific verb, resource, and scope. It is clearly distinguished from the sibling getPurchaseStatus, which it explicitly names as the follow-up polling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States both branches of behavior: waiver-qualifying callers resolve immediately with no payment, others get a checkoutUrl. It gives explicit when-to-use routing ('hand this URL to the member... poll getPurchaseStatus... afterwards') and an exclusion ('you cannot complete payment on their behalf').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quoteStayBookingAInspect
Get a server-computed price and availability quote for booking a Stay package on the caller's own behalf. Price is always re-derived from the package's actual pricing tiers — never trust or reuse a price shown elsewhere. Picks the largest price tier whose length is <= the requested nights (e.g. 10 nights against 7/14/21/30-day tiers uses the 7-day tier's rate), falling back to the smallest tier if the stay is shorter than all of them. Returns a quoteId valid for about 15 minutes — call bookStay with it to actually create the booking and get a payment link. Requires the caller's token to carry the 'bookings' OAuth scope (McpMember role), separate from the listings-management 'McpAgent' scope other tools here use.
| Name | Required | Description | Default |
|---|---|---|---|
| pets | No | Number of pets. Defaults to 0. | |
| rooms | No | Number of rooms to book. Defaults to 1. | |
| adults | No | Number of adult guests. Defaults to 1. | |
| checkIn | Yes | Check-in date, YYYY-MM-DD | |
| checkOut | Yes | Check-out date, YYYY-MM-DD | |
| children | No | Number of child guests. Defaults to 0. | |
| packageId | Yes | The Stay package's ID (from getPackages or search/browse tools) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (readOnlyHint=false, destructiveHint=false, openWorldHint=false) by disclosing the tier-selection algorithm, the ~15-minute quoteId lifetime, the non-destructive nature of quoting, and the required 'bookings' OAuth scope distinct from the 'McpAgent' scope other tools use.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded: pricing behavior first, then the quoteId contract, then the auth requirement. Every sentence carries information, though the tier example could be trimmed for a tighter read.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly covers the return value (quoteId, ~15 min validity) plus auth and next-step semantics, leaving no material gap for calling it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so every parameter is already documented; the description adds only indirect meaning (nights derived from checkIn/checkOut drive the tier choice) and no per-parameter syntax or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource ('server-computed price and availability quote for booking a Stay package') and scopes it to the caller's own behalf, which cleanly separates it from the host-side siblings like createStayPackage and from bookStay.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent to bookStay as the follow-on action and warns never to reuse a price shown elsewhere, but it never says when to use this versus checkStayAvailability or hasAvailabilityInWindow for pure availability questions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reorderRoomPhotosAInspect
Change the display order of a room's photo gallery. fileNames must be the FULL current gallery (same set, just reordered) — call getMyStayRooms first. Requires NOMADSTAYS_MCP_AGENT_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
| roomId | Yes | The room's EntryID | |
| stayId | Yes | The Stay's EntryID | |
| roomArea | Yes | 'photos' for the regular room gallery, 'workspace' for the room's coworking gallery | |
| fileNames | Yes | The complete gallery file names in the new desired order — must match the current set exactly (call getMyStayRooms first) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations establish it is a non-read-only, non-destructive, closed-world write. The description adds meaningful context beyond that: a required auth token (NOMADSTAYS_MCP_AGENT_TOKEN) and the fact that the full gallery set must be supplied. It does not say what happens if the set does not match, but the added auth and ordering semantics are substantive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short clauses, front-loaded with the action, then the key constraint, then the auth requirement. Every sentence carries information an agent needs; nothing is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter mutation with no output schema and full schema coverage, the description covers the prerequisite lookup, the ordering constraint, and the auth gate. The only gap is error behavior when fileNames does not match the current set.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3; fileNames and roomArea are already fully documented in the schema. The description reinforces the 'FULL current gallery' meaning of fileNames, but adds no new format or syntax details for stayId/roomId/roomArea.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Change the display order of a room's photo gallery'), which is enough to tell it apart from reorderStayPhotos at the gallery level. It does not explicitly name the stay-level sibling or contrast the two scopes, so sibling differentiation is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete prerequisite ('call getMyStayRooms first') and an operational constraint (fileNames must be the FULL current gallery, same set, just reordered) that effectively rules out add/remove use cases. No explicit when-not guidance against deleteRoomPhoto or uploadStayPhoto, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reorderStayPhotosAInspect
Change the display order of a Stay's listing or workspace photo gallery. fileNames must be the FULL current gallery (same set of files, just reordered) — call getMyStayPhotos first. This only reorders; it cannot add or remove photos. Requires NOMADSTAYS_MCP_AGENT_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
| area | Yes | Only these two areas support reordering | |
| stayId | Yes | The Stay's EntryID | |
| fileNames | Yes | The complete gallery file names in the new desired order — must match the current set exactly (call getMyStayPhotos first) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false, so the non-destructive nature is covered. The description adds genuinely new context: the NOMADSTAYS_MCP_AGENT_TOKEN auth requirement and the all-or-nothing fileNames constraint, which the annotations do not carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: purpose first, then the operational constraint, then the auth requirement. Every sentence earns its place and nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but for a pure reorder operation the description covers prerequisite, constraint, and auth. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description stresses the critical semantic that fileNames must be the FULL current gallery with the same set of files, which is the most error-prone aspect of the call. This adds emphasis beyond the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (change the display order) and resource (a Stay's listing or workspace photo gallery), and its scope is clear enough to separate it from getMyStayPhotos and the sibling reorderRoomPhotos. An agent knows exactly what operation this is.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives the prerequisite (call getMyStayPhotos first) and the boundary ('only reorders; it cannot add or remove photos'), which routes the agent to uploadStayPhoto/deleteStayPhoto for those needs. No alternative is named explicitly for those add/remove cases, so it stops just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
saveCoworkingApplicationAInspect
Update any subset of fields on an existing, not-yet-submitted Coworking Application. Same field set and validation rules as createCoworkingApplication — only pass the fields you're changing. Fails with a 409 if the application has already been submitted. Requires NOMADSTAYS_MCP_AGENT_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | ||
| address | No | ||
| country | No | Exact tbCountry.CountryName (not a country ID) — use getCountryOptions. | |
| website | No | ||
| telephone | No | ||
| applicantName | No | ||
| applicationId | Yes | The application's ID | |
| coworkingName | No | ||
| applicantEmail | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false. The description adds substantive context beyond those hints: partial-update semantics ('only pass the fields you're changing'), a concrete 409 error when the application is already submitted, a required auth token, and validation parity with createCoworkingApplication. This is rich behavioral disclosure for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences with purpose front-loaded, no filler or repetition. Every clause earns its place: scope, update strategy, failure condition, and auth requirement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter mutation tool with no output schema and low schema description coverage, the definition covers purpose, partial update behavior, validation alignment, the 409 error condition, and auth. It leaves per-field semantics to createCoworkingApplication and does not mention the success response, which is a minor gap given no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 22%, so the description must compensate for undocumented fields. It provides useful high-level guidance—same field set and validation as createCoworkingApplication, and only pass changed fields—which informs all optional parameters. However, it gives no per-field semantics (e.g., city, address, website), so it only partially compensates for the sparse schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Update') and resource ('Coworking Application'), with scope ('any subset of fields'), and distinguishes from siblings via 'existing, not-yet-submitted' and a reference to createCoworkingApplication for field set and validation. An agent can tell it apart from create, submit, list, and get without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides when: existing and not-yet-submitted; when-not: already submitted (fails with 409); how: only pass changed fields; and a prerequisite: requires NOMADSTAYS_MCP_AGENT_TOKEN. It does not explicitly name an alternative tool to use if the application is already submitted, but the condition and constraints are otherwise clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
saveExperienceApplicationAInspect
Update any subset of fields on an existing, not-yet-submitted Experience Application. Same field set and validation rules as createExperienceApplication — only pass the fields you're changing. Fails with a 409 if the application has already been submitted. Requires NOMADSTAYS_MCP_AGENT_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
| zip | No | ||
| city | No | ||
| state | No | ||
| maxPax | No | ||
| mobile | No | ||
| street | No | ||
| daysQty | No | Minimum 4 days, enforced server-side | |
| website | No | ||
| comments | No | ||
| vatNumber | No | ||
| hasKitchen | No | ||
| description | No | ||
| businessName | No | ||
| hasInsurance | No | ||
| monthlyPrice | No | ||
| applicationId | Yes | The application's ID | |
| downloadSpeed | No | ||
| tourismNumber | No | ||
| applicantEmail | No | ||
| experienceName | No | ||
| workFacilities | No | ||
| businessModelId | No | tbBusinessModel.EntryID — use getBusinessModelOptions. | |
| postalCountryId | No | tbCountry.CountryId — used only for the VAT check, stored on the business profile, not on the application. Use getCountryOptions. | |
| applicantLastName | No | ||
| laundryFacilities | No | ||
| applicantFirstName | No | ||
| experienceCountryId | No | tbCountry.CountryId — the country the application itself is filed under. Use getCountryOptions. | |
| availabilitySupplier | No | ||
| overnightLocationsQty | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover safety (not read-only, not destructive, not open-world), so the description's additions matter: partial-update semantics, the 409 conflict condition for submitted applications, and an explicit auth token requirement. It stops short of saying whether unspecified fields are strictly preserved or how validation failures surface.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences, front-loaded with the core action and scope, then the partial-update rule, then the failure mode and auth requirement. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 29-parameter mutation with no output schema and no annotation detail beyond safety hints, the description covers the critical behaviors an agent needs: partial update, inherited validation, token requirement, and the 409 conflict. The main residual gap is the absence of any statement about the response payload.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 17% across 29 parameters, so the description has to carry meaning. 'Same field set and validation rules as createExperienceApplication' usefully delegates the enumeration to a sibling tool, but it explains none of the individual fields, and the two country-related IDs (postalCountryId vs experienceCountryId) are only clarified inside the schema itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (update/save partial fields) applied to a named resource (Experience Application) with an explicit scope qualifier ('existing, not-yet-submitted'). This cleanly separates it from createExperienceApplication and submitExperienceApplication, both of which appear in the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operating context: only pass the fields being changed, and it fails with 409 if already submitted, and it inherits the field set/validation of createExperienceApplication. It does not explicitly say which sibling to use in order to submit, so the routing guidance is strong but not fully closed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
saveStayApplicationAInspect
Update any subset of fields on an existing, not-yet-submitted Stay Application. Same field set and validation rules as createStayApplication — only pass the fields you're changing. Fails with a 409 if the application has already been submitted. Requires NOMADSTAYS_MCP_AGENT_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
| zip | No | ||
| city | No | ||
| state | No | ||
| mobile | No | ||
| street | No | ||
| website | No | ||
| comments | No | ||
| stayName | No | ||
| vatNumber | No | ||
| hasKitchen | No | ||
| businessName | No | ||
| monthlyPrice | No | Indicative monthly wholesale price in US dollars (USD) — the application is always priced in USD. Packages are priced in the owner's chosen currency later, after approval. | |
| applicationId | Yes | The application's ID | |
| downloadSpeed | No | ||
| numberOfRooms | No | ||
| stayCountryId | No | tbCountry.CountryId — the country the application itself is filed under. Use getCountryOptions. | |
| tourismNumber | No | ||
| applicantEmail | No | ||
| workFacilities | No | ||
| businessModelId | No | tbBusinessModel.EntryID — use getBusinessModelOptions. | |
| postalCountryId | No | tbCountry.CountryId — used only for the VAT check, stored on the business profile, not on the application. Use getCountryOptions. | |
| applicantLastName | No | ||
| laundryFacilities | No | ||
| applicantFirstName | No | ||
| availabilitySupplier | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only, non-destructive. The description adds real value beyond that: partial-update semantics ('only pass the fields you're changing'), the 409 failure condition, and the required NOMADSTAYS_MCP_AGENT_TOKEN auth. Doesn't describe response/return behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core action and scope, then the field-set rule, then the failure condition and auth requirement. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers scope, partial-update semantics, auth, and error behavior, which is good for a mutation tool. But with 25 parameters and 20% schema coverage and no output schema, per-field semantics rely entirely on an external reference (createStayApplication), leaving the definition incomplete for such a wide parameter surface.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 20% across 25 params, so the schema does not carry the burden. The description adds patch semantics and defers field detail to createStayApplication ('Same field set and validation rules'), which is a reasonable strategy but leaves most field meanings unstated in either place.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Update') and resource ('existing, not-yet-submitted Stay Application'), immediately distinguishing it from createStayApplication (create), submitStayApplication (submit), and getStayApplication (read). The partial-update nature is explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly scopes usage to existing, not-yet-submitted applications and gives the when-not case ('Fails with a 409 if the application has already been submitted'). It references createStayApplication for the field set but doesn't explicitly name the alternative to use once submitted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchHelpCenterBRead-onlyInspect
Search NomadStays Help Center articles from the public knowledgebase endpoint and return matching title/content/slug entries.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default: 15) | |
| query | No | Search term to match against Help Center knowledgebase articles |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint=false, and openWorldHint=false, so safety is covered. The description usefully adds that the endpoint is a public knowledgebase and that results are title/content/slug entries, but says nothing about ranking, pagination, or behavior on zero matches.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence with zero filler, front-loading the verb and resource. Every clause (source endpoint, return fields) adds information rather than restating the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-optional-parameter search tool with annotations covering the safety profile and no output schema, the description is largely sufficient: it names the source and the shape of results. Slightly incomplete on result ordering and empty-result behavior, which are the only practical unknowns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters (limit with default 15, query) are already documented. The description contributes no additional syntax, matching semantics, or query-format guidance, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and resource (Help Center articles) and names the source endpoint plus the returned fields (title/content/slug). It implicitly separates itself from getHelpCenterArticle (single-article fetch) and listHelpCenterCategories, but never names a sibling explicitly, keeping it short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use, when-not-to-use, or alternative routing. An agent must infer that this is for keyword lookup and that getHelpCenterArticle is the follow-up for reading a single article. No exclusions or conditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
signupNomadStaysAccountAInspect
Creates a new NomadStays account on behalf of a person who does not have one yet. No authentication required — this is how an AI agent gets a person started. The account is created but inactive until the person clicks the confirmation link sent to their email; this call returns no session or token, so the agent cannot sign in or act as the user itself. Once confirmed, the person can log in at nomadstays.com/Account/Login and request their own MCP bearer token or OAuth grant to let an agent manage their account/listings going forward.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | A real email address the person controls — the confirmation link is sent here and the account stays inactive until it's clicked | ||
| lastName | Yes | The person's last name | |
| password | Yes | Account password, minimum 6 characters | |
| firstName | Yes | The person's first name | |
| telephone | Yes | Contact telephone number | |
| acceptGdpr | Yes | Must be true, and only after showing the person this statement and getting their explicit agreement (the same wording as the website's sign-up form): "I accept the Terms & Conditions (https://www.nomadstays.com/terms-and-conditions) and Privacy Policy (https://www.nomadstays.com/privacy), that the information collected is processed by Nomad Stays in order to receive the service, and I consent to analytics and advertising cookies as described in the Cookie Policy (https://www.nomadstays.com/cookies) and to receiving updates & newsletters." Never assume agreement on the person's behalf. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (readOnlyHint=false, destructiveHint=false, openWorldHint=false), which say nothing about auth or lifecycle. The description discloses that no authentication is required, that the created account is inactive until the emailed confirmation link is clicked, and that no session/token is returned — all decisive facts an agent needs to avoid assuming it can act as the new user.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and the no-auth precondition are front-loaded, and each sentence carries information. The final sentence about logging in and requesting a bearer token is useful routing context but is a step removed from calling this tool, making the text slightly longer than strictly required.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotation coverage of auth or return behavior, so the description must carry that burden — and it does, stating the activation flow and that no token is returned. For a six-required-parameter public signup call, nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each parameter is already documented in-schema, including the full GDPR consent wording on acceptGdpr. The description adds no parameter-level syntax or format detail beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Creates a new NomadStays account') and immediately scopes it with 'on behalf of a person who does not have one yet.' This cleanly distinguishes it from the large set of authenticated get*/update*/create* stay-management siblings, none of which handle account creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the precondition ('a person who does not have one yet'), the distinguishing property of this call ('No authentication required — this is how an AI agent gets a person started'), and what the agent must NOT expect to do afterward ('this call returns no session or token, so the agent cannot sign in or act as the user itself'). It even routes the agent to the follow-up path (person logs in and requests their own bearer token or OAuth grant), so the when/when-not is fully resolved.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submitCoworkingApplicationAInspect
Submit a completed Coworking Application for human review. Rejects with a missingFields list if any required field is still empty. There is no Application Fee to pay for Coworking, so — unlike submitStayApplication/submitExperienceApplication — this never returns a pay_application_fee/409-unpaid response. On success the application moves to human review. Requires NOMADSTAYS_MCP_AGENT_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
| applicationId | Yes | The application's ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond annotations (readOnly=false, destructive=false) by disclosing failure behavior (missingFields list), a notable negative behavior it does NOT exhibit (no fee/409-unpaid response, unlike siblings), the post-success state transition to human review, and the required auth token.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action and outcome, then adds failure and fee context. Four compact sentences with no filler, though the fee/409 comparison is slightly tangential to selecting the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by describing rejection payloads, the absence of a payment flow, the resulting review state, and auth requirements. An agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single parameter with 100% schema description coverage, so the schema already documents applicationId. The description adds no format, source, or lookup guidance for the parameter, making the baseline 3 correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (submit) and resource (Coworking Application) and names the sibling submissions it differs from (submitStayApplication/submitExperienceApplication). An agent can distinguish it from saveCoworkingApplication and createCoworkingApplication without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clarifies the context (an application that must be completed, moving to human review) and contrasts behavior with sibling submit tools. However, it does not explicitly say when to use this versus saveCoworkingApplication or createCoworkingApplication, leaving the submit-vs-save selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submitExperienceApplicationAInspect
Submit a completed Experience Application for human review. Rejects with a missingFields list if any required field is still empty, or a 409 if the Application Fee hasn't been paid/waived yet (call purchaseProduct with productId 9 and applicationId first — Experience uses product 9, NOT product 8). There is no partial/optimistic submission. On success the application moves to human review. Requires NOMADSTAYS_MCP_AGENT_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
| applicationId | Yes | The application's ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (which only say not read-only, not destructive, closed-world). The description discloses concrete error behavior (missingFields list, 409 on unpaid fee), the absence of partial submissions, the post-success transition to human review, and the required NOMADSTAYS_MCP_AGENT_TOKEN.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five tight sentences, front-loaded with the action and outcome, then prerequisites, then error modes and auth. Nothing is redundant and each clause carries operative information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter mutation with no output schema, the description covers success state, both failure modes, the required prior call with its exact productId, and the auth token requirement. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single applicationId parameter, so the schema already carries the meaning. The description references applicationId only in the context of the purchaseProduct prerequisite and adds no format or constraint detail beyond it — the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Submit') and resource ('Experience Application') plus the terminal state ('human review'), which cleanly separates it from the sibling saveExperienceApplication. An agent can tell this is the finalization step, not a draft save, without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit preconditions and failure routing: pay/waive the fee first via purchaseProduct with productId 9 and warns specifically against product 8. It also states there is no partial or optimistic submission, so the agent knows exactly when this call is valid and what to do if it errors.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submitStayApplicationAInspect
Submit a completed Stay Application for human review. Rejects with a missingFields list if any required field is still empty, or a 409 if the Application Fee hasn't been paid/waived yet (call purchaseProduct with productId 8 and applicationId first). There is no partial/optimistic submission — everything required must already be in place. On success the application moves to human review; nothing further is needed from the agent. Requires NOMADSTAYS_MCP_AGENT_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
| applicationId | Yes | The application's ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only mark this as non-read-only, non-destructive, non-open-world; the description goes well beyond by disclosing concrete failure modes (missingFields list, 409 on unpaid fee), the absence of partial submission, the terminal success state, and the required NOMADSTAYS_MCP_AGENT_TOKEN. This is rich operational context an agent needs before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action, then immediately the failure modes and the prerequisite. Every sentence adds decision-relevant information (error behavior, prerequisite call, terminal state, auth token) with no repetition or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return/outcome burden and does so: success moves the application to human review and requires nothing further, failures surface as missingFields or a 409. Auth requirement is also covered, so nothing needed to invoke correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and there is only one parameter (applicationId), so the schema already carries the burden. The description mentions applicationId only in the context of the purchaseProduct prerequisite, not as added semantics for the parameter itself, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (Submit) and resource (Stay Application) and clarifies that this is a completed-application handoff, not a draft save — distinguishing it from the sibling saveStayApplication. The terminal effect (moves to human review) is stated explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the preconditions clearly (all required fields must be filled, Application Fee must be paid/waived) and even routes the agent to the specific alternative — call purchaseProduct with productId 8 and applicationId first. No partial/optimistic submission is allowed, which removes ambiguity about sequencing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updateHostBusinessProfileAInspect
Update the host account's business profile (legal business name, VAT/business registration numbers). Applies to the account owning the MCP agent token, not a specific stay. Only fields supplied are changed. Does NOT touch bank or tax-ID details — those are not MCP-writable.
| Name | Required | Description | Default |
|---|---|---|---|
| vatNumber | No | ||
| businessName | No | ||
| entityAccount | No | Whether the host operates as a registered business entity | |
| businessNumber | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, openWorldHint=false. The description adds real value beyond them: partial-update semantics ('Only fields supplied are changed') and an explicit non-writable boundary (bank/tax-ID details are not MCP-writable). It stops short of stating auth requirements or whether the call returns the updated profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: purpose, scope, then mutation semantics and exclusion. The distinctive scope constraint is front-loaded and every sentence earns its place with no restatement of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with annotations covering the safety profile and no output schema (so return values need not be described), the description covers scope, partial-update behavior, and write exclusions. The remaining gap is the under-documented vatNumber/businessNumber params at 25% schema coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 25% (only entityAccount is documented), so the description must compensate. It names three of the four fields (business name, VAT number, business number) but does not explain the vatNumber vs businessNumber distinction, nor does it clarify the entityAccount boolean beyond the schema. Partial compensation, not full.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update the host account's business profile') and names the concrete fields affected (legal business name, VAT/business registration numbers). It also disambiguates scope against the many stay-scoped siblings: 'Applies to the account owning the MCP agent token, not a specific stay.' An agent can distinguish it from getMyBusinessProfile and the updateStay* tools without reading any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The scoping sentence ('account owning the MCP agent token, not a specific stay') and the exclusion of bank/tax-ID fields give useful routing context. However, it never states when to reach for this versus the read counterpart (getMyBusinessProfile) or any prerequisite/permission gating. Usage is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updateStayContactsBInspect
Update a Stay's contact/owner/manager details and social media links. Only fields supplied are changed. Requires NOMADSTAYS_MCP_AGENT_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
| stayId | Yes | The Stay's EntryID | |
| tikTok | No | ||
| No | X (Twitter) profile link | ||
| website | No | ||
| youtube | No | ||
| No | |||
| No | |||
| ownerName | No | ||
| ownerEmail | No | ||
| managerName | No | The day-to-day contact person's name (not necessarily the owner) | |
| ownerMobile | No | ||
| bookingEmail | No | Email guests use to reach the Stay about bookings | |
| bookingPhone | No | ||
| facebookPage | No | ||
| hostFullName | No | Display name shown to guests as the host | |
| managerEmail | No | ||
| bookingMobile | No | ||
| managerMobile | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, destructive=false, openWorld=false, confirming a safe partial write. The description adds two things they don't cover: partial-update semantics ('Only fields supplied are changed') and the required auth token (NOMADSTAYS_MCP_AGENT_TOKEN). It stops short of describing the response or permission scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the purpose, followed by the partial-update behavior and the auth requirement. Every sentence earns its place, though it could be marginally leaner.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description omits any return-value information. For a mutation tool with 18 mostly undocumented parameters, the partial-update and auth notes are helpful but incomplete; field-level detail is left to an under-covering schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 28% schema description coverage across 18 parameters, the schema leaves most fields undocumented (e.g. tikTok, ownerMobile, bookingPhone have no descriptions). The description only names high-level categories (contact/owner/manager, social links) and adds no field-level meaning, so it does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Update) and resource (a Stay's contact/owner/manager details and social media links), which is concrete enough to distinguish it from generic updateStayDetail or updateHostBusinessProfile. It does not, however, explicitly name those siblings, so routing is left slightly to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance and no mention of alternatives such as updateStayDetail, which handles other Stay fields. Usage is only implied by the purpose, and for a tool with several overlapping 'update Stay' siblings that gap matters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updateStayDetailAInspect
Update a Stay's title and/or description. Requires an MCP agent token (NOMADSTAYS_MCP_AGENT_TOKEN) scoped to the owning account. Only fields supplied are changed.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | OPTIONAL: new title | |
| stayId | Yes | The Stay's EntryID | |
| description | No | OPTIONAL: new description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=false, destructiveHint=false and openWorldHint=false already declaring the safety profile, the description usefully adds that it is a partial update ("Only fields supplied are changed") and that an account-scoped agent token is required. That is genuine behavioral context beyond the annotations, though nothing is said about failure modes or what happens to the stay record on success.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero filler, with the action and its field scope front-loaded ahead of the precondition and the partial-update note.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-risk partial mutation with full annotation coverage and a fully documented 3-parameter schema, the description supplies the missing auth requirement and update semantics. Only edge-case behavior (validation errors, what the response contains) is absent, and no output schema exists to cover it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both editable fields are already labeled OPTIONAL, so the schema carries the load. The description's "only fields supplied are changed" reinforces the optionality but adds no format, length or validation detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Update) and resource (a Stay's title and/or description), and the field scope crisply separates it from siblings like updateStayContacts, updateStayFacilities, updateStayPackage and updateStayRoom. It does not name any sibling explicitly, so the differentiation is inferred from the field list rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a real precondition — an MCP agent token scoped to the owning account — which tells the agent when the call will succeed. However, it never says when to reach for this tool versus the other updateStay* siblings, nor when not to use it, so the routing guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updateStayFacilitiesAInspect
Set which options are selected for one facility/checkbox group on a Stay — e.g. which languages are spoken. facilityDetailIds is the COMPLETE replacement list: anything not included will be UNCHECKED. Call getMyStayFacilities first to see current selections and valid IDs before changing them. Requires NOMADSTAYS_MCP_AGENT_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Exact facility group name, matching what getMyStayFacilities was called with | |
| stayId | Yes | The Stay's EntryID | |
| facilityDetailIds | Yes | The FULL list of facilityDetailId values that should be selected after this call — call getMyStayFacilities first to see valid IDs. An empty array clears all selections in this group. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false, destructiveHint=false and openWorldHint=false; the description goes well beyond by disclosing the full-replacement semantics ("anything not included will be UNCHECKED"), which is the single most important behavioral risk here. It also states the auth token requirement and the read-before-write workflow.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the action and its example, then the destructive replacement warning, then the prerequisite, then the auth requirement. Nothing is redundant and the highest-risk fact is emphasized in caps.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the mutation semantics, prerequisite lookup and credentials, which is what an agent needs to call it safely. With no output schema present, a brief note on what a successful update returns (or what errors look like) would close the last gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it frames facilityDetailIds as a COMPLETE replacement list and clarifies that group corresponds to a checkbox group such as spoken languages. It stops short of adding format/syntax detail the schema doesn't already carry.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Set), resource (options for one facility/checkbox group on a Stay) and even a concrete example (which languages are spoken). It is clearly distinguishable from the sibling getMyStayFacilities, which only reads selections.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to call getMyStayFacilities first to see current selections and valid IDs, and names the required NOMADSTAYS_MCP_AGENT_TOKEN. The agent knows both the prerequisite and the selection condition without inferring anything.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updateStayOrganisationalDataAInspect
Update a Stay's organisational data: address, check-in/out policy, pets/children/parking, cancellation policy, accommodation type, tourism/land-registration numbers, 'Why Choose Us' reasons, and more. Only fields supplied are changed. IMPORTANT: countryId, petsAllowedId, childrenAllowedId, parkingId, cxPolicyId, and stayTypeId are lookup IDs, NOT plain text or booleans — call getCountryOptions / getAdditionalInformationOptions / getCancellationPolicyOptions / getStayTypeOptions first to find the correct ID to send. Requires an MCP agent token scoped to the owning account.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | ||
| state | No | ||
| geoLat | No | Map pin latitude | |
| geoLng | No | Map pin longitude | |
| stayId | Yes | The Stay's EntryID | |
| address | No | ||
| reason1 | No | First 'Why Choose Us' reason shown to guests | |
| reason2 | No | ||
| reason3 | No | ||
| postCode | No | ||
| checkInTo | No | ||
| countryId | No | A country ID from getCountryOptions — NOT a country name. | |
| parkingId | No | An optionId from getAdditionalInformationOptions(filterName='Parking') — NOT a boolean. | |
| checkOutTo | No | ||
| cxPolicyId | No | A cxPolicyId from getCancellationPolicyOptions. | |
| stayTypeId | No | A stayTypeId from getStayTypeOptions. | |
| totalRooms | No | ||
| checkInFrom | No | ||
| fullPayment | No | Whether guests must pay in full up front (vs. pay on arrival). Only settable if the Stay's country allows it — check fullPaymentAllowedByCountry from getMyStayOrganisationalData first; writing true when the country doesn't allow it will be rejected. | |
| checkOutFrom | No | ||
| earlyCheckIn | No | ||
| lateCheckout | No | ||
| petsAllowedId | No | An optionId from getAdditionalInformationOptions(filterName='Pets Allowed') — NOT a boolean. | |
| tourismNumber | No | ||
| receiveReviews | No | ||
| childrenAllowedId | No | An optionId from getAdditionalInformationOptions(filterName='Children Allowed') — NOT a boolean. | |
| customCxPolicyLink | No | ||
| registeredBusiness | No | Whether the Stay is officially registered for tourism/lodging | |
| landRegistrationNumber | No | ||
| checkinLocationWhat3Words | No | what3words location for guest check-in |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the safety profile (not read-only, non-destructive), and the description adds substantial behaviour: ID-vs-text lookup requirements for six fields, the rejection behaviour for fullPayment when the country disallows it, and the auth requirement ('MCP agent token scoped to the owning account'). This is meaningful context an agent cannot derive from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, each load-bearing: scope, partial-update rule, the IMPORTANT lookup warning, and the auth note. The first sentence is a long field list, but the critical warning is emphasised ('IMPORTANT') and not buried; minor trimming of the field enumeration would tighten it further.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 30-param mutation tool with no output schema, the description covers change semantics, dependent lookup calls, country-gated field restrictions, and auth scope. Remaining gaps are only low-stakes formatting details (date/time string formats) and, since no output schema exists, no indication of what is returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 43% schema coverage across 30 params, the description carries extra weight, and it does compensate for the hardest cases: it identifies countryId, petsAllowedId, childrenAllowedId, parkingId, cxPolicyId and stayTypeId as lookup IDs and names the exact source call for each. Many remaining string/date params (checkInTo/checkOutTo formats, city/state/postCode) are still undocumented in both places, keeping it below 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update a Stay's organisational data') and then enumerates the exact field families it governs (address, check-in/out policy, pets/children/parking, cancellation policy, accommodation type, registration numbers, 'Why Choose Us'). This implicitly separates it from updateStayDetail/updateStayFacilities/updateStayContacts, but no sibling is named explicitly, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives strong context: partial-update semantics ('Only fields supplied are changed') and a prerequisite workflow telling the agent to call getCountryOptions/getAdditionalInformationOptions/getCancellationPolicyOptions/getStayTypeOptions before constructing certain fields, plus the schema-side requirement to check fullPaymentAllowedByCountry first. It lacks an explicit 'use X instead of this tool when...' exclusion, so it is a solid 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updateStayPackageBInspect
Update an existing pricing package on a Stay. Supplying 'prices' replaces ALL price rows for that package. Requires an MCP agent token scoped to the owning account.
| Name | Required | Description | Default |
|---|---|---|---|
| listed | No | ||
| maxPax | No | ||
| prices | No | OPTIONAL: replaces ALL price rows for this package when supplied. Exactly one entry per 7/14/21/30-night tier used. | |
| stayId | Yes | The Stay's EntryID | |
| endDate | No | OPTIONAL: last check-in date this package is available for | |
| isActive | No | OPTIONAL: archive (false) or restore (true) this package — cascades to 'listed' on all its price tiers, matching the host UI's Archive/Restore actions | |
| packageId | Yes | The package's EntryID (tbStayPackages) | |
| startDate | No | OPTIONAL: first check-in date this package is available for | |
| currencyFK | No | Call getCurrencyOptions for valid values. | |
| roomTypeFK | No | Call getRoomTypeOptions for valid values. | |
| stayRoomFK | No | The specific room this package covers (tbStaysRoom.EntryID). Call getMyStayRooms to find valid values. | |
| description | No | ||
| packageName | No | ||
| advertisingEndpoint | No | OPTIONAL: only usable on Advertising-business-model Stays — ignored otherwise, matching the host UI which hides this field for all other business models. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description says supplying 'prices' replaces ALL price rows, which is a destructive replacement, while annotations declare destructiveHint=false. This is a direct contradiction: an agent relying on the annotation would not expect the existing rows to be overwritten/dropped. Although the auth-scope sentence adds useful context, the rubric requires a score of 1 when the description contradicts annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three front-loaded sentences with no filler: purpose, critical replacement behavior, and auth prerequisite. Each sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 14-parameter mutation tool with no output schema, the description covers the two most important call-level facts: the replacement behavior of 'prices' and the required token scope. The schema documents most optional fields, though partial-update semantics and some field cascades remain implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 71%, and the description only reinforces the 'prices' replacement behavior already documented in the schema. It adds no meaning for undocumented parameters such as listed, maxPax, description, or packageName. Baseline 3 is appropriate when schema does most of the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update an existing pricing package on a Stay'), and the word 'existing' distinguishes it from createStayPackage/deleteStayPackage and updateStayRoom.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'existing pricing package' implies use for modifications, and the token requirement implies a prerequisite, but the description never says when to choose this over createStayPackage, deleteStayPackage, or getMyStayPackages. Usage is implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updateStayRoomAInspect
Update an existing room on a Stay. Only fields supplied are changed. Call getRoomTypeOptions(stayId) and getRoomFacilityOptions() first to find valid roomTypeFK/roomFacilityFk values. Requires an MCP agent token scoped to the owning account.
| Name | Required | Description | Default |
|---|---|---|---|
| beds | No | ||
| roomId | Yes | The room's EntryID (tbStaysRoom) — use getMyStayRooms to find it | |
| stayId | Yes | The Stay's EntryID | |
| maxPerson | No | ||
| mcpRoomId | No | External MCP room identifier. NOT AVAILABLE for boutique Stays — the host UI has no field for this there, and the API will reject it. | |
| roomTitle | No | ||
| roomTypeFK | No | A roomTypeId from getRoomTypeOptions(stayId). | |
| mainBedSize | No | ||
| otherBedSize | No | ||
| roomFacilityFk | No | The FULL replacement list of facilityDetailId values from getRoomFacilityOptions() — anything not included will be removed (except Wi-Fi, which is always kept). | |
| roomDescription | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the safety profile (readOnlyHint=false, destructiveHint=false). The description adds real value beyond that: it declares partial-update behavior ("Only fields supplied are changed"), the prerequisite option lookups, and the token-scope requirement. It does not disclose the destructive facility-replacement semantics, but that is carried in the schema, and nothing here contradicts the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with no filler. Purpose and partial-update behavior are front-loaded, then prerequisites, then auth — each sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema and 45% param coverage, the description covers the essentials: what changes, how to source valid FK values, and the auth requirement. The main gap is that it does not flag the full-replacement nature of roomFacilityFk, though the schema does.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is low (45%), so the description should compensate. It points to the source tools for roomTypeFK/roomFacilityFk (which the schema also states) but says nothing about beds, maxPerson, roomTitle, mainBedSize, otherBedSize, or roomDescription. It adds workflow context but leaves several parameters undocumented, so it only partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Update an existing room on a Stay") and the partial-update semantics, which lets an agent separate it from createStayRoom and deleteStayRoom. It stops short of explicitly naming those siblings, but the verb makes the distinction clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete prerequisite workflow (call getRoomTypeOptions(stayId) and getRoomFacilityOptions() before setting roomTypeFK/roomFacilityFk) and the auth context (MCP agent token scoped to owning account). No explicit when-not or exclusion conditions are stated, so it lands at clear-context rather than full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
uploadStayPhotoAInspect
Upload a photo to one of your Stay's photo areas. Supply EXACTLY ONE of 'url' (a public https:// link, e.g. a Google Drive or Dropbox share link — the server downloads it) or 'base64' (the raw image bytes, base64-encoded — use this when you already have the image data in hand, e.g. a user attached a photo in the conversation, and have nowhere public to host it first). The photo is validated against the same minimum specs as a manual upload: JPEG, PNG, or WebP, under 20MB, and a minimum resolution that depends on area. Most areas require at least 1920x1080 landscape; 'host' requires at least 1080x1350 PORTRAIT — a landscape photo will be rejected for that area. Every upload is downscaled to fit within 2560x1440 and re-encoded server-side as WebP (stripping metadata and anything that isn't genuine image data) before storage. Requires NOMADSTAYS_MCP_AGENT_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | A public https:// URL the server can download the image from (e.g. a Google Drive or Dropbox share link). Supply this OR base64, not both. | |
| area | Yes | Which photo area this belongs to: - 'listing': general Stay gallery photos (multiple allowed, min 1920x1080 landscape) - 'main': the single hero/cover photo shown first for the Stay (min 1920x1080 landscape, replaces any existing main photo) - 'workspace': coworking/workspace photos for the whole Stay (multiple allowed, min 1920x1080 landscape) - 'host': a photo of the HOST/CONTACT PERSON, not the property — must be PORTRAIT orientation, min 1080x1350 (replaces any existing host photo) - 'room': photos for one specific room — requires roomId (multiple allowed, min 1920x1080 landscape) | |
| base64 | No | Base64-encoded JPEG, PNG, or WebP image bytes (a data:image/...;base64,... URI prefix is also accepted and stripped automatically). Supply this OR url, not both. Under ~27MB encoded (20MB image). | |
| roomId | No | Required when area is 'room' — the room's EntryID (use getMyStayRooms to find it). Ignored for other areas. | |
| stayId | Yes | The Stay's EntryID (use getMyStays to find it) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Far exceeds the annotations: it discloses server-side download of the URL, per-area resolution/orientation validation rules (host must be PORTRAIT), the 20MB cap, mandatory downscaling to 2560x1440, WebP re-encoding, metadata stripping, the NOMADSTAYS_MCP_AGENT_TOKEN requirement, and that 'main'/'host' overwrite existing photos. The last point is the only mild tension with destructiveHint=false, but it is disclosed rather than hidden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action and the source-parameter rule before the lengthy validation details; the nested parentheticals are dense but each carries actionable constraint information. Slightly long, but no sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description never says what comes back (e.g. a new photo ID or confirmation), which is the one gap for an agent that may want to reference the uploaded photo later. Otherwise it covers prerequisites, constraints, and side effects thoroughly for a 5-parameter mutation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning on top: the EXACTLY-ONE exclusivity of url/base64, the fact that the server fetches the URL itself, and the orientation constraint that makes 'host' reject landscape images. Only the resolution thresholds are duplicated rather than extended.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Upload a photo to one of your Stay's photo areas') with the scoping unit ('photo area') that separates it from getMyStayPhotos, deleteStayPhoto, and reorderStayPhotos. The description makes clear this creates/attaches an image rather than reading or reordering one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit decision rules for the mutually exclusive source parameters: use 'url' when the image is publicly hosted, 'base64' when the agent already holds the bytes. It also states the roomId precondition for the 'room' area. It never names a sibling tool as an alternative or exclusion, so it stops just short of 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Added
cancelBooking - Added
getCancellationOptions
1 tool update
- Added
createStayEnquiry
1 tool update
- Changed
signupNomadStaysAccount1 field changed- changed
Input schema / properties / acceptGdpr / descriptionPrevious value: -"Must be true — the person has agreed to NomadStays' GDPR terms"New value: +"Must be true, and only after showing the person this statement and getting their explicit agreement (the same wording as the website's sign-up form): \"I accept the Terms & Conditions (https://www.nomadstays.com/terms-and-conditions) and Privacy Policy (https://www.nomadstays.com/privacy), that the information collected is processed by Nomad Stays in order to receive the service, and I consent to analytics and advertising cookies as described in the Cookie Policy (https://www.nomadstays.com/cookies) and to receiving updates & newsletters.\" Never assume agreement on the person's behalf."
2 tool updates
- Removed
getMarketplaceAdverts - Removed
getMarketplaceCategories
1 tool update
- Added
getStayCountsByCountry
7 tool updates
- Changed
createCoworkingApplication1 field changed- changed
Input schema / properties / country / descriptionPrevious value: -"Exact tbCountry.CountryName (not a country ID) — use getCountries and take the countryName field. Must not be a sanctioned country."New value: +"Exact tbCountry.CountryName (not a country ID) — use getCountryOptions and take the countryName field. Must not be a sanctioned country."
- Changed
createExperienceApplication5 fields changed- changed
Input schema / properties / businessModelId / descriptionPrevious value: -"tbBusinessModel.EntryID — use getBusinessModels. If the experience country's bookingModelsRestricted flag is true, only a 'StayDirect'-prefixed model is accepted."New value: +"tbBusinessModel.EntryID — use getBusinessModelOptions. If the experience country's bookingModelsRestricted flag is true, only a 'StayDirect'-prefixed model is accepted." - changed
Input schema / properties / experienceCountryId / descriptionPrevious value: -"tbCountry.CountryId for where the experience actually takes place — this is the country the application itself is filed under. Use getCountries to find a value."New value: +"tbCountry.CountryId for where the experience actually takes place — this is the country the application itself is filed under. Use getCountryOptions to find a value." - changed
Input schema / properties / postalCountryId / descriptionPrevious value: -"tbCountry.CountryId for the applicant's billing/postal address — used only to check whether a VAT number is required, and stored on the member's business profile (not on the application itself). Use getCountries to find a value."New value: +"tbCountry.CountryId for the applicant's billing/postal address — used only to check whether a VAT number is required, and stored on the member's business profile (not on the application itself). Use getCountryOptions to find a value." - changed
Input schema / properties / tourismNumber / descriptionPrevious value: -"Required if the experience country's tourismNumberRequired flag is true (see getCountries)"New value: +"Required if the experience country's tourismNumberRequired flag is true (see getCountryOptions)" - changed
Input schema / properties / vatNumber / descriptionPrevious value: -"Required if the postal country's vatNumberRequired flag is true (see getCountries)"New value: +"Required if the postal country's vatNumberRequired flag is true (see getCountryOptions)"
- Changed
createStayApplication6 fields changed- changed
Input schema / properties / businessModelId / descriptionPrevious value: -"tbBusinessModel.EntryID — use getBusinessModels. If the stay country's bookingModelsRestricted flag is true, only a 'StayDirect'-prefixed model is accepted."New value: +"tbBusinessModel.EntryID — use getBusinessModelOptions. If the stay country's bookingModelsRestricted flag is true, only a 'StayDirect'-prefixed model is accepted." - added
Input schema / properties / monthlyPrice / descriptionAdded value: +"Indicative monthly wholesale price in US dollars (USD) — the application is always priced in USD. Packages are priced in the owner's chosen currency later, after approval." - changed
Input schema / properties / postalCountryId / descriptionPrevious value: -"tbCountry.CountryId for the applicant's billing/postal address — used only to check whether a VAT number is required, and stored on the member's business profile (not on the application itself). Use getCountries to find a value."New value: +"tbCountry.CountryId for the applicant's billing/postal address — used only to check whether a VAT number is required, and stored on the member's business profile (not on the application itself). Use getCountryOptions to find a value." - changed
Input schema / properties / stayCountryId / descriptionPrevious value: -"tbCountry.CountryId for where the Stay is actually located — this is the country the application itself is filed under. Use getCountries to find a value."New value: +"tbCountry.CountryId for where the Stay is actually located — this is the country the application itself is filed under. Use getCountryOptions to find a value." - changed
Input schema / properties / tourismNumber / descriptionPrevious value: -"Required if the stay country's tourismNumberRequired flag is true (see getCountries)"New value: +"Required if the stay country's tourismNumberRequired flag is true (see getCountryOptions)" - changed
Input schema / properties / vatNumber / descriptionPrevious value: -"Required if the postal country's vatNumberRequired flag is true (see getCountries)"New value: +"Required if the postal country's vatNumberRequired flag is true (see getCountryOptions)"
- Changed
createStayPackage2 fields changed- changed
Input schema / properties / currencyFK / descriptionPrevious value: -"OPTIONAL: currency id. Call getCurrencyOptions for valid values."New value: +"REQUIRED: the currency this package is priced in — an id from getCurrencyOptions. Packages can use any supported currency; ASK the owner which one, never assume USD. All buyPrice values are in this currency." - changed
Input schema / requiredPrevious value: -[ - "stayId", - "packageName" -]New value: +[ + "stayId", + "packageName", + "currencyFK" +]
- Changed
saveCoworkingApplication1 field changed- changed
Input schema / properties / country / descriptionPrevious value: -"Exact tbCountry.CountryName (not a country ID) — use getCountries."New value: +"Exact tbCountry.CountryName (not a country ID) — use getCountryOptions."
- Changed
saveExperienceApplication3 fields changed- changed
Input schema / properties / businessModelId / descriptionPrevious value: -"tbBusinessModel.EntryID — use getBusinessModels."New value: +"tbBusinessModel.EntryID — use getBusinessModelOptions." - changed
Input schema / properties / experienceCountryId / descriptionPrevious value: -"tbCountry.CountryId — the country the application itself is filed under. Use getCountries."New value: +"tbCountry.CountryId — the country the application itself is filed under. Use getCountryOptions." - changed
Input schema / properties / postalCountryId / descriptionPrevious value: -"tbCountry.CountryId — used only for the VAT check, stored on the business profile, not on the application. Use getCountries."New value: +"tbCountry.CountryId — used only for the VAT check, stored on the business profile, not on the application. Use getCountryOptions."
- Changed
saveStayApplication4 fields changed- changed
Input schema / properties / businessModelId / descriptionPrevious value: -"tbBusinessModel.EntryID — use getBusinessModels."New value: +"tbBusinessModel.EntryID — use getBusinessModelOptions." - added
Input schema / properties / monthlyPrice / descriptionAdded value: +"Indicative monthly wholesale price in US dollars (USD) — the application is always priced in USD. Packages are priced in the owner's chosen currency later, after approval." - changed
Input schema / properties / postalCountryId / descriptionPrevious value: -"tbCountry.CountryId — used only for the VAT check, stored on the business profile, not on the application. Use getCountries."New value: +"tbCountry.CountryId — used only for the VAT check, stored on the business profile, not on the application. Use getCountryOptions." - changed
Input schema / properties / stayCountryId / descriptionPrevious value: -"tbCountry.CountryId — the country the application itself is filed under. Use getCountries."New value: +"tbCountry.CountryId — the country the application itself is filed under. Use getCountryOptions."
2 tool updates
- Added
getMarketplaceAdverts - Added
getMarketplaceCategories
Related MCP Connectors
Find vacation rentals worldwide by describing the trip, check host prices and book direct.
Search and request stays at independent hotels, B&Bs, guesthouses and vacation rentals, direct.
Search and book verified independent vacation rentals directly from hosts, with no guest fees.
Find vacation rentals, explore photos and property details, and open direct host booking links.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to search global holiday rentals, hotels and short-term stays, read full property details, and get exact, itemised prices for specific dates and party sizes, then hand the traveller a link to complete the booking. All tools are read-only, and it also returns guidance for hosts listing a property and for software companies building integrations.-
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to search remote job listings, read full descriptions and structured metadata, compare roles, and retrieve original application links when the account's subscription and scopes allow.53 npm23MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to search and explore remote job listings, salary stats, and popular roles, and supports token-authenticated actions like job alerts and apply redirects.MIT
- AlicenseCqualityDmaintenanceEnables searching Airbnb listings with advanced filtering (location, dates, guests, price) and retrieval of detailed property information including amenities, policies, and booking links.42,609 npm2MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.