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.5/5 across 13 of 13 tools scored.
All tools have distinct purposes with clear boundaries. The booking lifecycle tools (create, checkout, cancel, reschedule, etc.) are differentiated by payment method and stage, while search tools are separated by scope (initial search, availability check, similarity, comparison). Verification tools are unique.
All tools follow a consistent 'hemmabo_<service>_<action>' pattern using snake_case. Verbs are descriptive and paired with appropriate nouns (e.g., booking_cancel, search_properties). The two verification tools ('get_verified_stay_offer', 'verify_vacation_rental_node') match the pattern despite longer names.
13 tools is an ideal size for a vacation rental booking server. It covers search, comparison, availability, pricing, booking lifecycle, and host verification without being overwhelming. Each tool serves a necessary function in the workflow.
The tool set covers the main booking flow from search to cancellation, including price locking and verification. Missing are tools for listing all bookings for a user and updating booking details (e.g., guest count), but these are minor gaps that agents can work around.
Available Tools
13 toolsget_verified_stay_offerARead-onlyIdempotentInspect
Fetch a signed VRP verified_stay_offer from a verified host-domain node and verify its Ed25519 compact JWS against that domain's JWKS. Returns the official host-domain offer only when the signature, payload match, freshness, and agent citation permission pass.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Host-owned vacation rental domain, e.g. villaakerlyckan.se. | |
| guests | Yes | Total number of guests as integer >= 1. | |
| check_in | Yes | Arrival date in YYYY-MM-DD format. | |
| language | No | Optional preferred response language, e.g. en or sv. | |
| check_out | Yes | Departure date in YYYY-MM-DD format. Must be after check_in. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| fresh | No | |
| offer | No | |
| domain | Yes | |
| guests | No | |
| check_in | No | |
| verified | Yes | |
| check_out | No | |
| signature | No | |
| agent_citation | No | |
| payload_matches_offer | No | |
| signed_verified_stay_offer | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds significant detail: it verifies Ed25519 compact JWS against JWKS, checks signature, payload match, freshness, and agent citation permission. No contradiction with 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 efficient sentences that front-load the main action and then clarify return conditions. Every word adds value.
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 cryptographic complexity, the description covers the verification steps and return condition. It could mention what happens on failure (e.g., returns nothing or error), but with an output schema present, it is largely 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%, so the baseline is 3. The description does not add extra meaning beyond what the schema provides for parameters like domain, check_in, etc.
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 specific verbs ('Fetch', 'verify') and clearly identifies the resource ('signed VRP verified_stay_offer from a verified host-domain node'). It distinguishes from sibling tools like search or booking tools by focusing on cryptographic verification of an offer.
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 does not provide explicit guidance on when to use this tool versus alternatives like 'hemmabo_search_availability' or 'verify_vacation_rental_node'. The usage context is implied but not directly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hemmabo_booking_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 indicate destructive and idempotent. Description adds that it processes a refund and returns confirmation details, which is helpful context beyond annotations. No contradictions.
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 essential, front-loaded with primary action. 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?
With output schema present, description covers return values (refund amount, status). The tool is well-contextualized given complexity, schema richness, and annotations.
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 parameters well. The description does not add significant new meaning beyond what is in 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 tool cancels a confirmed booking and processes a Stripe refund. It distinguishes from siblings by specifying it is for confirmed bookings only, not for pending/unpaid ones.
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 (guest requests cancellation) and when not to (pending/unpaid bookings expire automatically). Also mentions refund calculation based on policy.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hemmabo_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?
Description adds behavioral context beyond annotations: it creates a booking record and generates a Stripe payment page, warns about double charges (aligning with idempotentHint=false). It doesn't detail failure scenarios but covers key side effects.
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, no fluff. Every sentence adds value: purpose, usage warning, optional parameter hint, return values.
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 10 parameters and output schema, the description covers purpose, usage guidelines, idempotency warning, and key parameter hints. Output schema handles return values, so no 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 baseline is 3. Description adds extra meaning for quoteId ('lock the price') and paymentMode alternatives, enriching 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?
Description clearly states the tool creates a booking with Stripe payment and returns a checkout URL. It distinguishes from siblings like hemmabo_booking_create and hemmabo_booking_status by specifying 'when the user is ready to pay' and warning against double calls.
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 'Use this tool when the user is ready to pay' and advises 'Do NOT call twice for the same booking — check booking.status first to avoid double charges.' Also mentions optional quoteId from booking.negotiate, providing clear when-to-use and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hemmabo_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?
Discloses behavioral traits beyond annotations: booking created as 'pending' status, requires host approval, and retry safety considerations. Annotations show readOnlyHint=false, idempotentHint=false, destructiveHint=false, which the description supports.
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 efficiently cover purpose, usage, behavioral notes, and return info. No wasted words; information is front-loaded 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?
Tool has output schema (not shown), and description summarizes return values. It covers key aspects, but could mention prerequisites like authentication or property availability constraints. Still, largely complete for a booking creation 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 covers all 7 parameters (100% coverage) with descriptions. Description adds minimal extra value, e.g., noting that guestPhone is optional but recommended. Baseline 3 is appropriate as schema already handles 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?
Description clearly states it creates a direct booking without online payment, and distinguishes from sibling 'booking.checkout' for paid bookings. Specifies that resulting status is 'pending' and requires host approval.
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 (no Stripe payment) and when not to use (paid bookings, use booking.checkout instead). Also provides guidance on avoiding duplicate bookings by not retrying on timeout without checking booking.status first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hemmabo_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?
The description discloses that the tool creates a binding price quote that locks for 15 minutes, and returns a quoteId with expiry timestamp. Annotations are all false, so the description fully compensates. No contradiction.
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 defines the action, second gives usage guidance, third lists returns. No wasted words; front-loaded with essential 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 tool has an output schema (not shown), the description summarizes the returns (quoteId, totals, breakdown, expiry). It integrates well with the booking workflow and sibling tools, providing necessary context for an agent 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%, so the baseline is 3. The description does not add significant new semantic details beyond what the schema already provides for 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 ('Create') and resource ('binding price quote') and specifies the lock duration (15 minutes). It distinguishes this tool from sibling 'booking.checkout' by indicating it is a prerequisite step for price certainty.
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 explicitly tells when to use the tool ('if the user wants price certainty') and warns about not using it ('without a quoteId, checkout calculates a fresh price'). It also instructs to pass the returned quoteId to booking.checkout.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hemmabo_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 already declare readOnlyHint and idempotentHint, so the description's behavioral contribution is moderate. It adds the important note that 'the quote may be invalid if dates are unavailable', which is a critical behavioral trait not covered by annotations. However, the description does not elaborate on potential side effects or authentication needs beyond what annotations imply.
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, with only two sentences and a list of returned fields. The first sentence states the action, the second provides usage guidance, and the third details return values. Every sentence serves a purpose 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?
Given the tool's complexity (4 params, output schema present), the description covers purpose, correct usage order, return field names, and currency unit. It also explains specific price components like 'gapTotal (gap-night discount if applicable)'. The sibling tool set includes booking and search tools, and the description positions this tool correctly in the workflow.
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 detailed parameter descriptions (e.g., guest count includes 'staircase pricing by guest count'). The description adds no new information beyond summarizing the returned fields. Baseline 3 is appropriate because the schema already 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 clearly states the tool gets a 'detailed pricing quote for a specific property, dates, and guest count', using specific verb 'Get' and resource 'pricing quote'. It distinguishes from sibling tools like hemmabo_booking_create or hemmabo_search_availability by focusing on pricing before 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?
The description explicitly instructs to 'Use this tool after confirming availability' and warns 'Do NOT use before checking availability', providing clear when-to-use and when-not-to-use guidance. It also notes the tool is for 'showing the user exact pricing before booking', aligning with the booking flow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hemmabo_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?
Discloses automatic price recalculation and Stripe charge/refund handling. Adds value beyond annotations (readOnlyHint=false, destructiveHint=true) by detailing financial side effects.
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, then usage, exclusion, and behavioral details. 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?
Covers purpose, when to use, exclusions, side effects, and return info (previous dates, price delta, Stripe details). With output schema present, 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 good param descriptions. Description does not add extra param info but provides tool-level context. 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?
Clearly states 'Reschedule a confirmed or pending booking to new dates.' Identifies verb (reschedule) and resource (booking), distinguishing it from siblings like cancel, create, and 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?
Explicitly tells when to use (guest wants to change dates) and when not to (booking cancelled/completed), and advises checking booking.status first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hemmabo_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 and destructiveHint=false, establishing safety. The description adds value by listing the returned fields (dates, guests, price, status, property info, cancellation policy), which sets correct expectations for the agent beyond what 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?
Three sentences, each with a distinct purpose: stating the action, providing usage guidance, and listing return content. No fluff, front-loaded with the primary verb, and 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 simple retrieval tool with one parameter and an existing output schema, the description adequately covers what the agent needs: purpose, when to use, and what to expect in the response. Sibling differentiation is handled implicitly through usage hints.
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 single parameter reservationId has full schema coverage (100%) with a clear description including an example UUID. The tool description adds context about where the ID originates (booking.checkout or booking.create), but does not provide new semantic details beyond 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 'Retrieve current status and full details of an existing booking,' using a specific verb and resource. It distinguishes from siblings by mentioning its use before rescheduling/cancelling and after booking.checkout, which sets it apart from other booking 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?
Explicit usage scenarios are provided: check payment status, confirm booking success, look up details before changes. The recommendation to use after booking.checkout if unsure is helpful. Though it could explicitly state when not to use, the guidance is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hemmabo_compare_propertiesARead-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 declare readOnlyHint and idempotentHint, but description adds behavioral details: returns one entry per propertyId, sorted by price (cheapest first), with unavailable properties last.
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?
Description is four sentences, front-loaded with purpose, then usage guideline, then ordering behavior; 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 the output schema exists, description covers all needed context: comparison, sorting, exclusion of unavailable properties, and explicit sibling distinction.
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 clear parameter descriptions; description adds no additional parameter-level information beyond what the schema provides.
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?
Description clearly states it compares availability and pricing for 2-10 specific properties, and explicitly distinguishes from discovery tools by advising use of search.properties 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?
Explicitly states when to use (user deciding between multiple properties) and when not to use (discovery; use search.properties instead). Also describes result sorting behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hemmabo_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 and same-month alternative date windows when unavailable.
| Name | Required | Description | Default |
|---|---|---|---|
| guests | No | Optional guest count. When provided, alternative date windows include live pricing. | |
| 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 | |
| alternativeDates | No | Nearby same-month date windows to offer when the requested dates are unavailable. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and idempotent behavior. The description adds that it returns availability status and conflict details, which is useful behavioral context beyond 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 with no wasted words. Front-loaded with purpose, followed by usage guidance, then return info. Excellent conciseness.
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 (as per context), the description covers return values. It includes usage context and constraints. Complete for a simple availability check 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%, so the description does not need to add more. However, the description does not provide additional parameter semantics beyond what is in 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 tool's purpose: checking property availability for specific dates. It distinguishes from the sibling tool 'search.properties' by specifying when to use each.
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 selecting a property from search.properties and before getting a quote. Clearly states not to use for general browsing and redirects to search.properties.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hemmabo_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, destructiveHint=false. Description adds return info (propertyId, pricing, capacity) but no behavioral contradictions.
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 purpose, then usage guidelines, then return info. No 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 5 parameters (3 required) and an output schema, the description covers entry point behavior, return fields, and boundaries well. Sibling tools are distinct.
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 good descriptions. Description adds minimal extra meaning beyond summarizing guests' role in pricing/capacity, but overall does not significantly enhance parameter understanding.
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?
Description clearly states it searches for vacation rental properties by location and dates, with a specific verb and resource. It distinguishes itself as the entry point for booking flows, differentiating from 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?
Explicitly states when to use (user wants to find/browse) and when not (if propertyId is known, naming alternatives search.availability or booking.quote).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hemmabo_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 provide readOnlyHint, idempotentHint, and destructiveHint. The description adds that it returns a list of similar available properties with live pricing and excludes the source, which are useful behavioral details beyond 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, front-loaded with the main purpose, and every sentence adds value. 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?
For a tool of moderate complexity with existing output schema, the description covers inputs, use case, exclusion, and pricing. Minor gap: does not specify what happens if no similar properties are found, but overall 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 coverage is 100% with descriptions for all five parameters. The description does not add parameter-level details beyond the schema, so it meets the baseline of 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?
The description clearly states it finds vacation rental properties similar to a given property on specific dates, with specifics like same region, type, capacity, and live pricing, excluding the source. It differentiates from sibling tools like search.properties (initial search) and compare_properties.
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 'Use this tool after the user has selected a property...' and 'Do NOT use for the initial search; use search.properties instead.' Provides criteria (same region, type, capacity) and when to use vs. alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_vacation_rental_nodeARead-onlyIdempotentInspect
Verify a Vacation Rental Protocol host-domain node. Reads https://{domain}/.well-known/vacation-rental.json and the node JWKS, confirms VRP v0.1, canonical host-domain control, Ed25519 signing keys, and the verified stay offer endpoint. Use before trusting or quoting a host-domain offer.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Host-owned vacation rental domain to verify, e.g. villaakerlyckan.se. Do not include a path. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| domain | Yes | |
| signing | No | |
| jwks_url | No | |
| protocol | No | |
| verified | Yes | |
| discovery_url | No | |
| protocol_version | No | |
| verified_stay_offer_url | No |
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 detailed behavioral context: reads specific URLs (well-known, JWKS), confirms protocol version and cryptographic material. This adds value beyond annotations without contradiction.
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 essential: purpose, steps, guidance. Front-loaded with action verb. No redundancy or fluff.
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 one parameter, annotations, and existence of an output schema, the description fully covers the tool's operation and rationale. It leaves no significant gaps 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 one parameter 'domain' described and regex-patterned. The description reinforces the parameter's role and adds usage context, meeting the baseline expectation.
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 action (verify a node) and resource (VRP host-domain node). It lists specific verification steps, distinguishing it from sibling tools that focus on booking, searching, or cancellations.
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 explicitly advises using the tool 'before trusting or quoting a host-domain offer,' providing clear context. It lacks explicit when-not-to-use or alternative tool references, but the sibling set is diverse enough to avoid confusion.
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.