hemmabo-mcp-server
Server Details
Vacation rental booking infrastructure for independent hosts. 0% commission. MCP + Stripe ACP.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- HemmaBo-se/hemmabo-mcp-server
- GitHub Stars
- 1
- Server Listing
- HemmaBo
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.6/5 across 11 of 11 tools scored.
All tools have distinct, well-defined purposes. The search tools (search.availability, search.compare, search.properties, search.similar) each serve a unique search function, while booking tools cover specific actions like creating, checking out, negotiating, quoting, canceling, rescheduling, and checking status. No two tools overlap in functionality.
Tool names consistently follow a 'domain.action' pattern, with domains 'search' and 'booking' and clear verb or noun actions (e.g., 'search.properties', 'booking.cancel'). This creates a predictable and easily navigable naming scheme.
With 11 tools, the set is well-scoped for a vacation rental booking server. It covers search, booking, and post-booking operations without being overly complex or missing essential functions. The number is appropriate for the domain.
The tool set covers the main user journey: search, get quotes, negotiate, book, pay, cancel, reschedule, and check status. Minor gaps exist, such as no tool for modifying booking details (other than reschedule) or handling host-side operations, but the core booking flow is complete.
Available Tools
11 toolsbooking.cancelADestructiveIdempotentInspect
Cancel a confirmed booking and process the Stripe refund. Use this tool when the guest explicitly requests cancellation. Do NOT use for pending/unpaid bookings — those expire automatically. Refund amount is calculated based on the host's cancellation policy. Returns cancellation confirmation with refund amount and status.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Cancellation reason for host notification (e.g. 'Travel plans changed'). Optional but recommended. | |
| reservationId | Yes | Booking UUID from booking.checkout or booking.create (e.g. '550e8400-e29b-41d4-a716-446655440000'). |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present only when isError=true. |
| refund | No | Refund payload returned by cancel-booking edge function, when present. |
| status | Yes | Final booking status after cancellation. |
| reservationId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false. The description adds behavioral context about refund processing based on cancellation policy and return values, though it does not detail other side effects like notifications.
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 only four sentences, each serving a purpose. The first sentence front-loads the key action, making it efficient and easy to parse.
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 the presence of an output schema (confirmed), the description mentions the return values (confirmation with refund amount and status). This covers the essential behavioral outcomes for a cancellation 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%, with both parameters having adequate descriptions. The tool description does not add new semantic information beyond what the schema provides, so baseline score 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?
The description clearly states the verb 'Cancel' and the resource 'a confirmed booking', and specifies the action of processing a Stripe refund. It distinguishes itself from sibling tools like booking.reschedule or booking.create.
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 provides explicit when-to-use ('when the guest explicitly requests cancellation') and when-not-to-use ('Do NOT use for pending/unpaid bookings') with reasoning, and mentions the cancellation policy for refund calculation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
booking.checkoutAInspect
Create a booking with Stripe payment and return a checkout URL. Use this tool when the user is ready to pay — it creates the booking record and generates a Stripe payment page. Do NOT call twice for the same booking — check booking.status first to avoid double charges. Optionally pass quoteId from booking.negotiate to lock the price. Returns reservationId, paymentUrl (Stripe checkout page), and pricing details.
| Name | Required | Description | Default |
|---|---|---|---|
| guests | Yes | Total number of guests as integer >= 1 (e.g. 4). | |
| channel | No | 'federation' (default): applies direct booking discount. 'public': uses standard website rate. | |
| checkIn | Yes | Arrival date in ISO 8601 format (YYYY-MM-DD, e.g. '2026-07-15'). Must be today or later. | |
| quoteId | No | Quote ID from booking.negotiate to lock the price. Optional — if omitted, a fresh federation price is calculated at checkout time. | |
| checkOut | Yes | Departure date in ISO 8601 format (YYYY-MM-DD, e.g. '2026-07-22'). Must be after checkIn. | |
| guestName | Yes | Full name of primary guest (e.g. 'Anna Svensson'). | |
| guestEmail | Yes | Email for booking confirmation (e.g. 'anna@example.com'). Must be a valid email address. | |
| guestPhone | No | Phone with country code (e.g. '+46701234567'). Optional but recommended. | |
| propertyId | Yes | Property UUID from search.properties (e.g. '550e8400-e29b-41d4-a716-446655440000'). | |
| paymentMode | No | 'checkout_session' (default): returns Stripe redirect URL. 'payment_intent': returns client_secret for programmatic payment (AI agent MPP flow). |
Output Schema
| Name | Required | Description |
|---|---|---|
| mpp | No | Present when paymentMode='payment_intent'. |
| error | No | Present only when isError=true. |
| guests | No | |
| nights | No | |
| status | No | Booking status (typically 'pending' until payment succeeds). |
| checkIn | No | |
| checkOut | No | |
| currency | Yes | |
| createdAt | No | |
| paymentUrl | No | Stripe Checkout redirect URL. |
| propertyId | No | |
| totalPrice | Yes | Final total charged (or to be charged), in minor currency units. |
| payment_modes | No | Supported payment modes. |
| reservationId | Yes | Booking UUID. Use for subsequent status/cancel/reschedule calls. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behavioral traits: it creates a booking and generates a Stripe payment page (side effect), and warns about idempotency (double charges). It also mentions the return values: 'Returns reservationId, paymentUrl (Stripe checkout page), and pricing details.' This exceeds the minimal transparency expected from annotations (which only hint at read-ness and destructiveness).
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 concise yet information-dense: three sentences with no filler. It front-loads the main action and returns, then adds warnings and optional usage. 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?
Given the tool's complexity (10 parameters, payment integration, multiple enum options), the description covers essential context: when to use, what to avoid, optional parameters, return values, and integration with sibling tools (booking.negotiate, booking.status). An output schema exists (context signals indicate true), so the description appropriately focuses on behavior and usage rather than duplicating return types.
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 input schema already has 100% description coverage, providing clear parameter details. The description adds value by explaining the business logic for some parameters: channel determines discount ('federation' applies direct booking discount), and quoteId locks the price from negotiation. This goes beyond the schema's raw descriptions.
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 clearly states the tool's purpose: 'Create a booking with Stripe payment and return a checkout URL.' It uses a specific verb ('Create') and resource ('booking with payment'), effectively distinguishing it from sibling tools like booking.create (just creates a booking) and booking.quote (quotes a price without payment).
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 provides explicit when-to-use instructions: 'Use this tool when the user is ready to pay.' It also warns against misuse: 'Do NOT call twice for the same booking — check booking.status first to avoid double charges.' Additionally, it explains optional usage with quoteId from booking.negotiate to lock price, giving clear context for correct invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
booking.createAInspect
Create a direct booking without online payment (legacy flow). Use this tool when the user wants to book without Stripe payment — the booking is created with status 'pending' and requires host approval. Do NOT use for paid bookings — use booking.checkout instead. Do NOT retry on timeout without calling booking.status first to avoid duplicate bookings. Returns bookingId, final price, and confirmation details.
| Name | Required | Description | Default |
|---|---|---|---|
| guests | Yes | Total number of guests as integer >= 1 (e.g. 4). | |
| checkIn | Yes | Arrival date in ISO 8601 format (YYYY-MM-DD, e.g. '2026-07-15'). Must be today or later. | |
| checkOut | Yes | Departure date in ISO 8601 format (YYYY-MM-DD, e.g. '2026-07-22'). Must be after checkIn. | |
| guestName | Yes | Full name of primary guest (e.g. 'Anna Svensson'). | |
| guestEmail | Yes | Email for booking confirmation (e.g. 'anna@example.com'). Must be a valid email address. | |
| guestPhone | No | Phone with country code (e.g. '+46701234567'). Optional but recommended for check-in coordination. | |
| propertyId | Yes | Property UUID from search.properties (e.g. '550e8400-e29b-41d4-a716-446655440000'). |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present only when isError=true. |
| guests | No | |
| nights | No | |
| status | Yes | Booking status — typically 'pending' until host approves. |
| checkIn | No | |
| checkOut | No | |
| currency | No | |
| bookingId | Yes | Persistent booking UUID. Use for status/cancel/reschedule. |
| createdAt | No | |
| priceType | No | Pricing mode used (federation/gap_night/package_*). |
| propertyId | No | |
| totalPrice | No | Final price written to the booking. |
| packageApplied | No | |
| gapDiscountPercent | No | |
| federationDiscountPercent | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes that the booking is created with 'pending' status and requires host approval, adding context beyond annotations. No contradiction with annotations; readOnlyHint=false and destructiveHint=false are consistent with a non-destructive creation.
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, front-loaded with purpose, each sentence adding value: purpose, usage guidance, retry advice, and return info. No redundant words.
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 key behaviors (pending, host approval, no payment), retry handling, and mentions output details. However, lacks details on failure modes (e.g., what if host doesn't approve) and doesn't address auth requirements or rate limits. Output schema exists but is only mentioned in passing.
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?
Input schema has 100% coverage with detailed descriptions for each parameter. The description does not add new parameter-level information beyond what the schema provides, but it does set context for the overall flow.
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 clearly states 'Create a direct booking without online payment (legacy flow)', specifying both the action and the resource, and distinguishes itself from sibling tools like booking.checkout for paid bookings.
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 ('when the user wants to book without Stripe payment') and when not to use ('Do NOT use for paid bookings — use booking.checkout instead'), and provides retry guidance for timeouts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
booking.negotiateAInspect
Create a binding price quote that locks the price for 15 minutes. Use this tool before booking.checkout to guarantee the quoted price during payment. Do NOT skip this step if the user wants price certainty — without a quoteId, checkout calculates a fresh price that may differ. Returns quoteId (pass to booking.checkout), public and federation totals, per-night breakdown, and expiry timestamp.
| Name | Required | Description | Default |
|---|---|---|---|
| guests | Yes | Total number of guests as integer >= 1 (e.g. 4). Determines which price tier is applied. | |
| checkIn | Yes | Arrival date in ISO 8601 format (YYYY-MM-DD, e.g. '2026-07-15'). Must be today or later. | |
| checkOut | Yes | Departure date in ISO 8601 format (YYYY-MM-DD, e.g. '2026-07-22'). Must be after checkIn. | |
| propertyId | Yes | Property UUID from search.properties (e.g. '550e8400-e29b-41d4-a716-446655440000'). |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present only when isError=true. |
| guests | No | |
| nights | No | |
| checkIn | No | |
| quoteId | Yes | Snapshot ID. Pass to booking.checkout to lock this price. |
| checkOut | No | |
| currency | No | |
| gapNight | No | |
| gapTotal | No | |
| breakdown | No | |
| propertyId | No | |
| validUntil | Yes | Quote expiry (ISO 8601). Typically 15 minutes after creation. |
| publicTotal | No | |
| packageApplied | No | |
| federationTotal | Yes | |
| gapDiscountPercent | No | |
| federationDiscountPercent | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses key behavioral traits: price is locked for 15 minutes, returns quoteId, totals, breakdown, and expiry. Although annotations mark readOnlyHint=true (contradicting creation), the description honestly conveys the mutation, making it transparent beyond 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?
The description is two sentences with no extraneous words. It front-loads the main purpose, then provides usage guidance and output summary efficiently.
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 4 required parameters and an output schema, the description covers all critical context: time sensitivity (15-minute lock), prerequisite relationship with checkout, and key return fields (quoteId, totals, breakdown, expiry). Agents have enough information to use 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 all parameters are well-described in the schema. The description does not add new meaning to the parameters beyond what the schema provides, so it meets the baseline but does not exceed it.
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 clearly states the tool creates a binding price quote that locks the price for 15 minutes. It specifies the verb 'Create' and the resource 'binding price quote', distinguishing it from siblings like booking.checkout by explaining its role in the booking flow.
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 agents to use this tool before booking.checkout to guarantee the quoted price and warns that skipping this step may result in a different price. It also mentions that the output quoteId must be passed to checkout, providing clear when-to-use and why.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
booking.quoteARead-onlyIdempotentInspect
Get a detailed pricing quote for a specific property, dates, and guest count. Use this tool after confirming availability to show the user exact pricing before booking. Do NOT use before checking availability — the quote may be invalid if dates are unavailable. Returns publicTotal (website rate), federationTotal (direct booking discount), gapTotal (gap-night discount if applicable), per-night breakdown, and package pricing. All prices are integers in the property's local currency (e.g. SEK).
| Name | Required | Description | Default |
|---|---|---|---|
| guests | Yes | Total number of guests as integer >= 1 (e.g. 4). Determines which price tier is applied (staircase pricing by guest count). | |
| checkIn | Yes | Arrival date in ISO 8601 format (YYYY-MM-DD, e.g. '2026-07-15'). Must be today or later. | |
| checkOut | Yes | Departure date in ISO 8601 format (YYYY-MM-DD, e.g. '2026-07-22'). Must be after checkIn. | |
| propertyId | Yes | Property UUID from search.properties (e.g. '550e8400-e29b-41d4-a716-446655440000'). |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present only when isError=true. |
| guests | No | |
| nights | No | Number of nights in the range. |
| checkIn | No | |
| checkOut | No | |
| currency | No | ISO 4217 currency code. |
| gapNight | No | True when the stay qualifies as a gap fill. |
| gapTotal | No | Gap-night discounted total when applicable; otherwise null. |
| breakdown | No | Detailed pricing breakdown. |
| propertyId | No | |
| publicTotal | No | Website rate total in minor currency units. |
| packageApplied | No | Applied package, if any. |
| federationTotal | No | Direct-booking total (host-controlled discount applied). |
| gapDiscountPercent | No | Gap-night discount percentage when applied. |
| federationDiscountPercent | No | Host-configured federation discount percentage. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate read-only and non-destructive behavior. The description adds valuable context about return fields (publicTotal, federationTotal, etc.) and currency, enhancing transparency.
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?
Concise and front-loaded, each sentence adds essential information without redundancy. Clearly 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?
Given the output schema exists, the description adequately covers purpose, usage sequence, return values, and currency, making it complete for an AI agent.
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 detailed parameter descriptions. The description does not add new meaning to parameters beyond what's in the schema, 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?
The description clearly states the tool gets a detailed pricing quote for a property, dates, and guests. It uses specific verbs and resources, and distinguishes itself from sibling tools like booking.create or search.availability.
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 advises to use after confirming availability and warns against using before, providing clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
booking.rescheduleADestructiveInspect
Reschedule a confirmed or pending booking to new dates. Use this tool when the guest wants to change travel dates on an existing booking. Do NOT use if the booking is cancelled or completed — check booking.status first. Automatically recalculates price and handles Stripe charge (if price increased) or refund (if decreased). Returns previous dates, new dates, price delta, and Stripe transaction details.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Reason for rescheduling (e.g. 'Flight delayed'). Optional but recommended for host records. | |
| newCheckIn | Yes | New arrival date in ISO 8601 format (YYYY-MM-DD, e.g. '2026-07-20'). Must be today or later. | |
| newCheckOut | Yes | New departure date in ISO 8601 format (YYYY-MM-DD, e.g. '2026-07-27'). Must be after newCheckIn. | |
| reservationId | Yes | Booking UUID to reschedule (e.g. '550e8400-e29b-41d4-a716-446655440000'). Must be in 'confirmed' or 'pending' status. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present only when isError=true. |
| reason | No | |
| status | Yes | Booking status after reschedule. |
| pricing | No | |
| newDates | No | |
| previousDates | No | |
| reservationId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses side effects beyond annotations: automatic price recalculation, Stripe charge/refund handling, and return fields (previous dates, new dates, price delta, Stripe details). This adds significant value over the destructiveHint annotation.
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 concise sentences with clear structure: purpose, usage condition, then behavioral summary. No redundant or unnecessary words.
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 100% schema coverage, output schema presence, and behavioral details, the description covers the tool's operation well. Minor omission: it doesn't mention date validation (already in schema) but that's acceptable.
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 a baseline of 3 is appropriate. The description adds minor context (reason is optional but recommended) but does not substantially enhance understanding beyond the schema descriptions.
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 clearly states the action (reschedule) and resource (confirmed/pending booking to new dates). It distinguishes from siblings by specifying not to use if the booking is cancelled or completed, and advises checking booking.status first.
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 when to use (guest wants to change travel dates) and when not to use (booking cancelled/completed). It does not name alternative tools but provides clear guidance on prerequisites and exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
booking.statusARead-onlyIdempotentInspect
Retrieve current status and full details of an existing booking. Use this tool to check payment status, confirm a booking went through, or look up details before rescheduling or cancelling. Use after booking.checkout if unsure whether the booking succeeded. Returns booking dates, guests, price, status, property info, and cancellation policy.
| Name | Required | Description | Default |
|---|---|---|---|
| reservationId | Yes | Booking UUID from booking.checkout or booking.create (e.g. '550e8400-e29b-41d4-a716-446655440000'). |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present only when isError=true. |
| guests | No | |
| status | Yes | |
| checkIn | No | |
| checkOut | No | |
| currency | No | |
| createdAt | No | |
| guestName | No | |
| updatedAt | No | |
| guestEmail | No | |
| propertyId | No | |
| totalPrice | No | Total amount in minor currency units. |
| propertyName | No | |
| reservationId | Yes | |
| propertyDomain | No | |
| cancellationPolicy | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. Description adds value by specifying the output fields (booking dates, guests, price, status, property info, cancellation policy) without contradicting 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 sentences: first states purpose, second gives use cases, third lists output. No fluff, 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?
Given the output schema exists, the tool is simple (1 param), and annotations cover safety, the description is complete with usage scenarios and output summary.
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 schema already fully documents the single parameter 'reservationId' with format and example. The description does not add further parameter semantics 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 clearly states the verb 'Retrieve' and the resource 'current status and full details of an existing booking'. It distinguishes from sibling tools like booking.cancel or booking.create by specifying use cases for checking status before rescheduling or cancelling.
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 guidance: 'Use this tool to check payment status, confirm a booking went through, or look up details before rescheduling or cancelling. Use after booking.checkout if unsure whether the booking succeeded.' This provides clear when-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search.availabilityARead-onlyIdempotentInspect
Check whether a specific property is available for the requested dates. Use this tool after the user has selected a property from search.properties and wants to confirm availability before getting a quote. Do NOT use for general browsing — use search.properties instead. Returns available=true/false with conflict details (blocked dates, existing bookings, active locks) if unavailable.
| Name | Required | Description | Default |
|---|---|---|---|
| checkIn | Yes | Arrival date in ISO 8601 format (YYYY-MM-DD, e.g. '2026-07-15'). Must be today or later. | |
| checkOut | Yes | Departure date in ISO 8601 format (YYYY-MM-DD, e.g. '2026-07-22'). Must be after checkIn. | |
| propertyId | Yes | Property UUID returned by search.properties (e.g. '550e8400-e29b-41d4-a716-446655440000'). |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present only when isError=true. |
| reason | No | Reason when available=false. |
| checkIn | No | |
| checkOut | No | |
| available | Yes | True if the property is bookable for the entire range. |
| propertyId | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds value by detailing the return format: 'available=true/false with conflict details (blocked dates, existing bookings, active locks).' This behavioral context is useful beyond 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 concise sentences with front-loaded purpose, clear usage guidance, and returns description. No wasted words.
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 annotations and output schema coverage, the description fully contextualizes the tool: when to use, what it does, and what it returns. No gaps.
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 each parameter already described. The description adds minimal extra meaning (e.g., propertyId from search.properties), but does not significantly enhance understanding of the parameters.
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 clearly states the verb 'Check' and the resource 'whether a specific property is available for the requested dates.' It distinguishes itself from siblings like 'search.properties' (for browsing) and 'search.similar', making the tool's unique role unmistakable.
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 ('after user has selected a property from search.properties and wants to confirm availability before getting a quote') and when not to use ('Do NOT use for general browsing — use search.properties instead'), with a named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search.compareARead-onlyIdempotentInspect
Compare availability and pricing for 2–10 specific properties on the same dates. Use this tool when the user is deciding between multiple properties and wants to see price and availability side by side. Do NOT use for discovery — use search.properties first. Returns one entry per propertyId, sorted by federation price (cheapest first), with unavailable properties last.
| Name | Required | Description | Default |
|---|---|---|---|
| guests | Yes | Total number of guests as integer >= 1. | |
| checkIn | Yes | Arrival date in ISO 8601 format (YYYY-MM-DD). Must be today or later. | |
| checkOut | Yes | Departure date in ISO 8601 format (YYYY-MM-DD). Must be after checkIn. | |
| propertyIds | Yes | Array of 2 to 10 property UUIDs to compare side by side. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | Number of compared properties returned. |
| error | No | Present only when isError=true. |
| guests | No | |
| checkIn | No | |
| checkOut | No | |
| comparison | No | One entry per requested propertyId, sorted by federation price (cheapest first), unavailable last. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, destructiveHint. The description adds value by explaining sorting order (cheapest first, unavailable last) and return structure (one entry per propertyId).
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 core functionality, no unnecessary words. 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?
Given the 4 parameters with full schema descriptions and the presence of an output schema, the description covers purpose, usage, and return behavior adequately.
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 well-documented. The description reinforces the context but adds minimal new meaning 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 clearly states it compares availability and pricing for 2-10 specific properties on the same dates. It uses specific verb+resource and distinguishes from sibling tools like search.properties which is for discovery.
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 when to use (user deciding between multiple properties) and when not to use (do not use for discovery, use search.properties first). Also describes sorting behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search.propertiesARead-onlyIdempotentInspect
Search available vacation rental properties by location and travel dates. Use this tool when the user wants to find or browse properties — it is the entry point for all booking flows. Do NOT use if the user already has a specific propertyId; use search.availability or booking.quote instead. Returns a list of available properties with propertyId, live pricing (public and federation rates), and capacity info needed for subsequent tools.
| Name | Required | Description | Default |
|---|---|---|---|
| guests | Yes | Total number of guests as integer >= 1 (e.g. 4). Determines price tier and filters out properties with insufficient capacity. | |
| region | No | Region, area, or destination name to search within. Partial match (e.g. 'Skane', 'Toscana', 'Bavaria'). At least one of region or country should be provided. | |
| checkIn | Yes | Arrival date in ISO 8601 format (YYYY-MM-DD, e.g. '2026-07-15'). Must be today or later. | |
| country | No | Country name to filter by (e.g. 'Sweden', 'Italy'). Partial match. At least one of region or country should be provided. | |
| checkOut | Yes | Departure date in ISO 8601 format (YYYY-MM-DD, e.g. '2026-07-22'). Must be after checkIn. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present only when isError=true. |
| guests | No | Echoed guest count. |
| checkIn | No | Echoed check-in date (YYYY-MM-DD). |
| checkOut | No | Echoed check-out date (YYYY-MM-DD). |
| properties | No | Available properties matching the search criteria, with live federation pricing. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds the return structure (propertyId, live pricing, capacity info), which goes beyond annotations without contradicting them.
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 concise sentences, front-loaded with core purpose, then usage guidance, then return details. No redundant 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?
Given the complexity (5 params, output schema exists, rich annotations), the description covers the tool's role in the booking flow, usage constraints, and return value context. Complete for the task.
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 has 100% coverage with detailed parameter descriptions. The tool description adds minimal extra semantics (e.g., 'live pricing and capacity info needed for subsequent tools'), but since schemas already document parameters, a baseline score 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?
The description clearly states it searches properties by location and dates, and explicitly differentiates from sibling tools like search.availability and booking.quote.
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 explicit when-to-use (entry point for booking flows) and when-not-to-use (if user has propertyId, use alternatives), with named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search.similarARead-onlyIdempotentInspect
Find vacation rental properties similar to a given property on specific dates. Use this tool after the user has selected a property (via search.properties) and wants to see alternatives — same region, same property type, same or larger capacity. Do NOT use for the initial search; use search.properties instead. Returns a list of similar available properties with live pricing, excluding the source property.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results. Default 5, max 20. | |
| guests | No | Number of guests. Defaults to source property's max_guests. | |
| checkIn | Yes | Arrival date in ISO 8601 format (YYYY-MM-DD). Must be today or later. | |
| checkOut | Yes | Departure date in ISO 8601 format (YYYY-MM-DD). Must be after checkIn. | |
| propertyId | Yes | UUID of the source property to find alternatives for. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | Number of similar properties returned. |
| error | No | Present only when isError=true. |
| guests | No | Effective guest count used for matching and pricing. |
| checkIn | No | |
| checkOut | No | |
| sourcePropertyId | No | The property similar listings were found for. |
| similarProperties | No | Similar available properties (same region, same type, same/larger capacity), sorted by federation price. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds valuable context: returns list with live pricing, excludes source property. Does not contradict 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 sentences cover purpose, usage guidelines, and output details with no extraneous information. 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?
Given the presence of an output schema, the description adequately explains the return type and key behavior (live pricing, exclusion of source). Sufficient for effective use.
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%. The description adds default values for limit (5) and guests (source property's max_guests), which are not in the schema, enhancing understanding 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 clearly states 'Find vacation rental properties similar to a given property on specific dates' with specific verb and resource. It distinguishes from sibling tools like search.properties by indicating post-selection use.
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 when to use: after the user has selected a property via search.properties. Includes a clear 'Do NOT' for initial search and provides criteria for similarity (same region, type, capacity).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Your Connectors
Sign in to create a connector for this server.