Skip to main content
Glama

HemmaBo Host Booking Engine

Ownership verified

Server Details

Host-owned vacation-rental direct booking via VRP. Signed offers, 0% commission. Not an OTA.

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.

MCP client
Glama
MCP server

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.

100% free. Your data is private.
Tool DescriptionsA

Average 4.7/5 across 15 of 15 tools scored.

Server CoherenceA
Disambiguation5/5

Each tool has a clearly distinct purpose: search, availability, comparison, pricing, booking with different payment flows, post-booking actions, host verification, and onboarding. The descriptions explicitly state when to use each tool and when not to, eliminating ambiguity.

Naming Consistency4/5

Most tools follow the hemmabo_<verb>_<noun> pattern (e.g., hemmabo_booking_cancel, hemmabo_search_properties). Two tools (get_verified_stay_offer, verify_vacation_rental_node) use a different but still clear pattern. The naming is mostly consistent and readable.

Tool Count5/5

15 tools is an appropriate number for a booking engine covering search, verification, pricing, booking, post-booking, and host onboarding. Each tool serves a distinct role without feeling excessive or sparse.

Completeness4/5

The tool set covers the full booking lifecycle: discovery (search, similar, compare), verification (node, offer), pricing (quote, negotiate), booking (checkout, create), and post-booking (status, cancel, reschedule). Minor gaps exist (e.g., no partial modification), but the core workflows are well-supported.

Available Tools

15 tools
get_verified_stay_offerA
Read-onlyIdempotent
Inspect

Fetch, verify, and render a live host-domain signed VRP stay offer for exact dates and guest count. Verifies Ed25519 JWS against domain JWKS. Call after search returns a host domain, always before quoting final price or a booking link. Read-only: must not lock a quote, create a booking, collect guest details, or start checkout. Route booking only to the signed direct_booking_url on the host domain. The parameters work as a set: pass the same domain, checkIn, checkOut and guests the guest used at search; checkIn must be strictly before checkOut, and the resulting night count — not the dates themselves — drives the signed price and the host capacity check, so changing either date re-prices the offer. Omit language to inherit the host default; it never affects price or availability.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesHost-owned domain without protocol or path (e.g. 'villaakerlyckan.se', 'myvilla.it'). Optional; omit when the host has not chosen a domain yet. Invalid: 'https://...', paths, ports, or booking URLs.
guestsYesTotal guest count as positive integer (e.g. 2, 4). Used by the host node for capacity validation and guest-tier pricing on the signed offer.
checkInYesRequested arrival date in YYYY-MM-DD format (e.g. '2026-11-14'). Must be strictly before checkOut. Use the same dates the guest requested in search.
checkOutYesRequested departure date in YYYY-MM-DD format (e.g. '2026-11-17'). Must be strictly after checkIn. Guest does not stay the departure night.
languageNoOptional BCP-47 language tag for labels and formatting (e.g. 'en', 'sv', 'de', 'sv-SE'). Omit to use host default; does not change price or availability.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
freshNoTrue when the signed offer is still within its validity/freshness window.
domainYesEchoed host domain that issued the signed offer.
guestsNoEchoed requested guest count.
checkInNoEchoed requested arrival date.
checkOutNoEchoed requested departure date.
verifiedYesTrue only when the host-domain offer signature and payload checks pass.
signatureNoEd25519/JWS verification details, including key id and verification status.
widget_mediaNoImages and media hydrated from the verified host discovery document for the ChatGPT widget.
agent_citationNoCitation permission and safe-to-quote status derived from the signed offer.
agent_guardrailsNoRules the agent must follow when presenting or acting on this offer.
payload_matches_offerNoTrue when the signed payload matches the structured offer returned to the agent.
official_offer_summaryNoSmall signed-offer summary for agents to quote without inventing price, availability, discounts, savings, comparisons, or booking details.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses cryptographic verification (Ed25519 JWS against JWKS), explains that night count drives price and date changes re-price, and reinforces read-only nature 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (~150 words) with all sentences adding value, front-loaded with purpose and usage, then parameter details, no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With high complexity, full schema coverage, and an output schema, the description fully covers workflow position, parameter behavior, safety constraints, and routing instructions, making it complete for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 100% schema coverage, the description adds critical behavioral context: parameters must match search, checkIn must be before checkOut, night count (not dates) drives pricing, and language does not affect price or availability. This clarifies schema constraints and usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool fetches, verifies, and renders a signed stay offer, distinguishing it from sibling tools like hemmabo_booking_quote or verify_vacation_rental_node by specifying it is for host-domain signed offers after search and before quoting/booking.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to call (after search returns a host domain, before quoting or booking), what not to do (must not lock quote, create booking, etc.), and how to route bookings (to signed direct_booking_url), providing clear usage boundaries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hemmabo_booking_cancelA
DestructiveIdempotent
Inspect

Cancel a confirmed booking and process the Stripe refund per host cancellation policy. Use when the guest explicitly requests cancellation. Do not use for pending/unpaid bookings — those expire automatically. Requires Authorization: Bearer token (MCP_API_KEY or OAuth). Destructive and idempotent: cancelling an already-cancelled booking returns the same status. Rate-limited per token. reservationId must be the booking UUID from hemmabo_booking_checkout or hemmabo_booking_create — not a propertyId; reason is optional free text forwarded to the host.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoHuman-readable cancellation reason for the host (e.g. 'Travel plans changed', 'Flight cancelled'). Optional; omit when the guest did not give a reason.
reservationIdYesBooking or reservation UUID from hemmabo_booking_checkout or hemmabo_booking_create (e.g. '7c9e6679-7425-40de-944b-e07fc1f90ae7'). Required to look up, cancel, or reschedule the same booking record.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when isError=true.
refundNoRefund payload returned by cancel-booking edge function, when present.
statusYesFinal booking status after cancellation.
reservationIdYes
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds significant context beyond annotations: it confirms destructiveness, idempotency (cancelling already-cancelled returns same status), rate limiting, and authorization requirements. No contradictions with annotations (readOnlyHint false, idempotentHint true, destructiveHint true).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (4-5 sentences), front-loaded with the main purpose, followed by usage guidelines and parameter details. Every sentence adds value with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 does not need to explain return values. It covers purpose, usage, behavioral traits, parameter semantics, authorization, and rate limits, making it fully complete for an AI agent to select and invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds value by clarifying that reservationId must be a booking UUID from specific tools and is not a propertyId, and that reason is optional free text forwarded to the host. This exceeds the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Cancel', the resource 'confirmed booking', and the action 'process the Stripe refund per host cancellation policy'. It distinguishes from siblings by specifying not to use for pending/unpaid bookings, which sets it apart from related tools like hemmabo_booking_create or hemmabo_booking_status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit guidance is provided: 'Use when the guest explicitly requests cancellation. Do not use for pending/unpaid bookings.' It indicates when to use and when not, but does not explicitly name alternative sibling tools like hemmabo_booking_reschedule for adjustments, which would make it a 5.

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 fallback non-VRP booking and return a host-configured Stripe checkout URL. Use only after explicit user confirmation when no signed VRP direct_booking_url is available. When get_verified_stay_offer returns a signed direct_booking_url, route the guest there instead. Requires Authorization: Bearer token (MCP_API_KEY or OAuth). Creates a pending booking and Stripe session server-side; not idempotent — check hemmabo_booking_status before retrying. Rate-limited per token. Pass quoteId to honor a price locked by hemmabo_booking_negotiate for the same propertyId/dates/guests, or omit it to price fresh at checkout; paymentMode picks the Stripe flow and channel picks the pricing channel, while guestName and guestEmail identify the guest.

ParametersJSON Schema
NameRequiredDescriptionDefault
guestsYesTotal number of guests as integer >= 1 (e.g. 4).
channelNoPricing channel selector. 'federation' (default for agent flows): direct host-source total. 'public': standard website rate without agent channel pricing. Omit to use federation.
checkInYesArrival date in ISO 8601 calendar format YYYY-MM-DD (e.g. '2026-07-15'). Must be today or later in the property's timezone. Must be strictly before checkOut; together they define the stay length used for pricing and availability.
quoteIdNoQuote ID string from hemmabo_booking_negotiate (e.g. 'q_abc123'). Optional — omit to calculate a fresh host-source price at checkout. Provide when the guest locked a price within the 15-minute quote window.
checkOutYesDeparture date in ISO 8601 calendar format YYYY-MM-DD (e.g. '2026-07-22'). Must be strictly after checkIn on the same calendar. The guest does not stay the departure night.
guestNameYesPrimary guest full name as plain text (e.g. 'Anna Svensson'). Stored on the booking for host confirmation; use the name the guest provided.
guestEmailYesPrimary guest email in RFC 5322 format (e.g. 'anna@example.com'). Used for booking confirmation and host contact; must be deliverable.
guestPhoneNoPrimary guest phone in E.164 format with country code (e.g. '+46701234567'). Optional; omit when unknown. Recommended for check-in coordination.
propertyIdYesStable property UUID from hemmabo_search_properties (e.g. '550e8400-e29b-41d4-a716-446655440000'). Pass the exact UUID string — never a property name, host domain, or booking URL.
paymentModeNoStripe payment flow. 'checkout_session' (default): returns a browser redirect URL. 'payment_intent': returns client_secret for embedded/agentic payment integrations. Omit to use checkout_session.

Output Schema

ParametersJSON Schema
NameRequiredDescription
mppNoPresent when paymentMode='payment_intent'.
errorNoPresent only when isError=true.
guestsNo
nightsNo
statusNoBooking status (typically 'pending' until payment succeeds).
checkInNo
checkOutNo
currencyYes
createdAtNo
paymentUrlNoStripe Checkout redirect URL.
propertyIdNo
totalPriceYesFinal total charged (or to be charged), in minor currency units.
payment_modesNoSupported payment modes.
reservationIdYesBooking UUID. Use for subsequent status/cancel/reschedule calls.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds important behavioral details beyond annotations: non-idempotent, rate-limited, creates server-side pending booking and Stripe session. No contradiction with annotations (readOnlyHint=false, idempotentHint=false).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single paragraph packs a lot of information but remains readable. Could be slightly more structured with bullet points, but it's not overly verbose. All sentences contribute meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (10 parameters, 6 required, output schema present), the description covers purpose, usage, behavior, parameter semantics, and distinguishes from siblings. No gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 100% schema coverage, the description adds value by explaining when to use quoteId (honor locked price) vs omit, how paymentMode and channel affect the flow, and defaults for optional parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it creates a fallback non-VRP booking and returns a Stripe checkout URL. Distinguishes from get_verified_stay_offer which provides a direct_booking_url. The verb 'Create' and resource 'non-VRP booking' are specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs to use only after explicit user confirmation when no signed direct_booking_url is available, and to route to get_verified_stay_offer otherwise. Also advises checking hemmabo_booking_status before retrying due to non-idempotence.

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 pending direct booking without online payment for configured non-VRP fallback deployments. Use only after explicit user confirmation, with a propertyId from search, and only when no signed VRP direct_booking_url is available. For signed VRP offers, route to the signed host-domain URL instead. Requires Authorization: Bearer token (MCP_API_KEY or OAuth). Writes a pending booking server-side; not idempotent — check hemmabo_booking_status before retrying on timeout. Rate-limited per token. The booking is identified by propertyId + the checkIn/checkOut range + guests; guestName and guestEmail are required for host confirmation, while guestPhone is optional for check-in coordination.

ParametersJSON Schema
NameRequiredDescriptionDefault
guestsYesTotal guest count as a positive integer (e.g. 2, 4, 6). Used for capacity filtering and staircase pricing tiers. Properties with maxGuests below this value are excluded from search results.
checkInYesArrival date in ISO 8601 calendar format YYYY-MM-DD (e.g. '2026-07-15'). Must be today or later in the property's timezone. Must be strictly before checkOut; together they define the stay length used for pricing and availability.
checkOutYesDeparture date in ISO 8601 calendar format YYYY-MM-DD (e.g. '2026-07-22'). Must be strictly after checkIn on the same calendar. The guest does not stay the departure night.
guestNameYesPrimary guest full name as plain text (e.g. 'Anna Svensson'). Stored on the booking for host confirmation; use the name the guest provided.
guestEmailYesPrimary guest email in RFC 5322 format (e.g. 'anna@example.com'). Used for booking confirmation and host contact; must be deliverable.
guestPhoneNoPrimary guest phone in E.164 format with country code (e.g. '+46701234567'). Optional; omit when unknown. Recommended for check-in coordination.
propertyIdYesStable property UUID from hemmabo_search_properties (e.g. '550e8400-e29b-41d4-a716-446655440000'). Pass the exact UUID string — never a property name, host domain, or booking URL.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when isError=true.
guestsNo
nightsNo
statusYesHost-node booking status. 'completed' is a protocol compatibility output only, not a status this tool writes.
checkInNo
checkOutNo
currencyNo
bookingIdYesPersistent booking UUID. Use for status/cancel/reschedule.
createdAtNo
priceTypeNoPricing mode used (federation/gap_night/package_*).
propertyIdNo
totalPriceNoFinal price written to the booking.
packageAppliedNo
gapDiscountPercentNo
federationDiscountPercentNo
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds context beyond annotations: non-idempotent, rate-limited, pending booking creation, and booking identification criteria. No contradictions 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with focused sentences, but slightly longer than minimal. Front-loaded core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given complexity, schema coverage, and presence of output schema, the description sufficiently covers usage context, parameter roles, and behavioral notes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed descriptions. Description adds value by explaining how parameters collectively identify the booking and their roles in host confirmation and coordination.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it creates a pending direct booking without online payment for non-VRP fallback deployments, distinguishing it from sibling tools like hemmabo_booking_quote and hemmabo_booking_checkout.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use (after user confirmation, with propertyId from search, no signed VRP URL) and when not to use (VRP offers should route to host-domain URL), with clear prerequisites.

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 for configured non-VRP fallback checkout deployments. Use only when no signed direct_booking_url is available and the user explicitly asks to lock a price. Never use this for search, availability, VRP offers, rendering a stay-offer widget, or verified-offer display — use get_verified_stay_offer instead. Requires Authorization: Bearer token (MCP_API_KEY or OAuth). Writes a short-lived quote snapshot server-side. Rate-limited per token. Locks the propertyId's price for the exact checkIn/checkOut range and guests; the returned quoteId encodes that combination and is honored by hemmabo_booking_checkout only until validUntil.

ParametersJSON Schema
NameRequiredDescriptionDefault
guestsYesTotal number of guests as integer >= 1 (e.g. 4). Determines which price tier is applied.
checkInYesArrival date in ISO 8601 calendar format YYYY-MM-DD (e.g. '2026-07-15'). Must be today or later in the property's timezone. Must be strictly before checkOut; together they define the stay length used for pricing and availability.
checkOutYesDeparture date in ISO 8601 calendar format YYYY-MM-DD (e.g. '2026-07-22'). Must be strictly after checkIn on the same calendar. The guest does not stay the departure night.
propertyIdYesStable property UUID from hemmabo_search_properties (e.g. '550e8400-e29b-41d4-a716-446655440000'). Pass the exact UUID string — never a property name, host domain, or booking URL.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when isError=true.
guestsNo
nightsNo
checkInNo
quoteIdYesSnapshot ID. Pass to hemmabo_booking_checkout to lock this price.
checkOutNo
currencyNo
gapNightNo
gapTotalNo
breakdownNo
propertyIdNo
validUntilYesQuote expiry (ISO 8601). Typically 15 minutes after creation.
publicTotalNo
packageAppliedNo
federationTotalYes
gapDiscountPercentNo
federationDiscountPercentNo
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds important behavioral details beyond the annotations: it writes a short-lived quote snapshot server-side, is rate-limited per token, locks the price for the exact stay range and guests, and the returned quoteId encodes that combination and is honored until validUntil. The annotations only provide readOnlyHint=false and destructiveHint=false, so the description provides necessary context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single paragraph with no wasted words, but it is relatively dense. It could be slightly improved with better structure (e.g., bullet points for usage guidelines), but it is still clear and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity, the description covers authorization, rate limits, lock duration, usage conditions, exclusions, and relationships to sibling tools. An output schema exists, so return values are not needed. The description is complete for an AI agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides descriptions for all 4 parameters (100% coverage). The description does not add significant new meaning beyond what is in the schema; it repeats some details like guest tier and date ranges but does not provide additional constraints or clarifications.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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 for specific non-VRP fallback checkout deployments. It distinguishes from the sibling tool get_verified_stay_offer by specifying that this tool is for locking prices when no signed direct_booking_url is available.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use this tool (when no signed direct_booking_url is available and user explicitly asks to lock a price) and when not to use it (for search, availability, VRP offers, rendering a stay-offer widget, or verified-offer display). It also provides the alternative tool name: get_verified_stay_offer.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hemmabo_booking_quoteA
Read-onlyIdempotent
Inspect

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 the final host-source total for the booking flow, per-night breakdown, and package pricing context. All prices are integers in the property's local currency (e.g. SEK). The quote is the propertyId priced for the exact checkIn/checkOut range and guests; the night count and party size together select the price tier, so changing any of them re-quotes.

ParametersJSON Schema
NameRequiredDescriptionDefault
guestsYesTotal guest count as a positive integer (e.g. 2, 4, 6). Used for capacity filtering and staircase pricing tiers. Properties with maxGuests below this value are excluded from search results.
checkInYesArrival date in ISO 8601 calendar format YYYY-MM-DD (e.g. '2026-07-15'). Must be today or later in the property's timezone. Must be strictly before checkOut; together they define the stay length used for pricing and availability.
checkOutYesDeparture date in ISO 8601 calendar format YYYY-MM-DD (e.g. '2026-07-22'). Must be strictly after checkIn on the same calendar. The guest does not stay the departure night.
propertyIdYesStable property UUID from hemmabo_search_properties (e.g. '550e8400-e29b-41d4-a716-446655440000'). Pass the exact UUID string — never a property name, host domain, or booking URL.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when isError=true.
guestsNo
nightsNoNumber of nights in the range.
checkInNo
checkOutNo
currencyNoISO 4217 currency code.
gapNightNoTrue when the stay qualifies as a gap fill.
gapTotalNoGap-night adjusted total when applicable; otherwise null.
breakdownNoDetailed pricing breakdown.
propertyIdNo
publicTotalNoWebsite rate total in minor currency units.
packageAppliedNoApplied package, if any.
federationTotalNoLegacy field: direct host-source total. Prefer directBookingTotal in user-facing copy.
directBookingTotalNoPreferred user-facing field: direct host-source total.
gapDiscountPercentNoGap-night discount percentage when applied.
hostSourcePublicTotalNoPreferred user-facing field: public host-source total.
federationDiscountPercentNoLegacy internal field. Do not present this as a guest-facing discount, savings, or comparison.
directBookingDiscountPercentNoLegacy internal field. Do not present this as a guest-facing discount, savings, or comparison.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnly and idempotent. The description adds behavioral details: returns per-night breakdown, currency type (integer in local currency), and that changing parameters re-quotes. 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single paragraph of 5 sentences, front-loaded with the purpose. It is concise with no wasted words, though could be slightly more structured (e.g., bullet points) for clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (4 required parameters, no enums, output schema present), the description adequately covers return values (total, breakdown, package context) and usage order. It is complete enough for an agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds general context (e.g., 'pricing tier' based on night count and party size) but does not significantly enhance individual parameter meanings beyond what schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get a detailed pricing quote for a specific property, dates, and guest count.' It specifies the verb (Get), resource (pricing quote), and scope, effectively distinguishing it from sibling tools like search_availability 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use ('after confirming availability') and when not to ('Do NOT use before checking availability — the quote may be invalid if dates are unavailable'). Provides clear usage context 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_rescheduleA
Destructive
Inspect

Reschedule a confirmed or pending booking to new dates with automatic repricing and Stripe charge/refund. Use when the guest wants to change dates on an existing booking. Do not use if cancelled or if a protocol compatibility client reports completed — check hemmabo_booking_status first. Requires Authorization: Bearer token (MCP_API_KEY or OAuth). Destructive write that may charge or refund via Stripe. Rate-limited per token. Identify the existing booking by reservationId, then give the new stay as newCheckIn/newCheckOut (newCheckIn strictly before newCheckOut); the date change drives automatic repricing and a Stripe charge or refund for the difference.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoHuman-readable reschedule reason for host records (e.g. 'Flight delayed', 'Extended conference'). Optional; omit when not provided by the guest.
newCheckInYesNew arrival date in YYYY-MM-DD format (e.g. '2026-08-01'). Must be today or later. Must be strictly before newCheckOut.
newCheckOutYesNew departure date in YYYY-MM-DD format (e.g. '2026-08-08'). Must be strictly after newCheckIn.
reservationIdYesBooking or reservation UUID from hemmabo_booking_checkout or hemmabo_booking_create (e.g. '7c9e6679-7425-40de-944b-e07fc1f90ae7'). Required to look up, cancel, or reschedule the same booking record.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when isError=true.
reasonNo
statusYesBooking status after reschedule.
pricingNo
newDatesNo
previousDatesNo
reservationIdYes
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate destructiveHint=true. The description adds valuable context: Stripe charges/refunds, requires Authorization token, rate-limiting, and that it is a destructive write. 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is comprehensive yet front-loaded with core action. Every sentence adds meaningful information, though slightly verbose. Could be trimmed without loss, but still efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 covers prerequisites (check status), side effects (repricing, Stripe), parameter relationships, and authorization needs. For a mutation tool with annotations, it is fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 100% coverage and detailed descriptions. The description reinforces constraints (e.g., newCheckIn strictly before newCheckOut, date formats) and explains reservationId source, adding extra value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Reschedule') and resource ('confirmed or pending booking'), clearly distinguishing from siblings like hemmabo_booking_cancel or hemmabo_booking_create. It explicitly states the date change with automatic repricing and Stripe actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states when to use (guest wants to change dates on existing booking) and explicitly advises against use if cancelled/completed, recommending checking status first. It does not name specific alternative sibling tools but implies a pre-check step.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hemmabo_booking_statusA
Read-onlyIdempotent
Inspect

Retrieve current status and full details of an existing booking by reservationId. Use to confirm checkout/create succeeded or before cancel/reschedule. Requires Authorization: Bearer token (MCP_API_KEY or OAuth). Read-only against the database but returns guest PII (name, email). Rate-limited per token. The only input is the reservationId returned by hemmabo_booking_checkout or hemmabo_booking_create — not the propertyId.

ParametersJSON Schema
NameRequiredDescriptionDefault
reservationIdYesBooking or reservation UUID from hemmabo_booking_checkout or hemmabo_booking_create (e.g. '7c9e6679-7425-40de-944b-e07fc1f90ae7'). Required to look up, cancel, or reschedule the same booking record.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when isError=true.
guestsNoBooked guest count.
statusYesHost-node booking status. 'completed' is a protocol compatibility output only, not the active lifecycle truth.
checkInNoBooked arrival date.
checkOutNoBooked departure date.
currencyNoISO 4217 currency code for the booking total.
createdAtNoBooking creation timestamp.
guestNameNoPrimary guest name stored on the booking.
updatedAtNoLast update timestamp for the booking record.
guestEmailNoPrimary guest email stored on the booking.
propertyIdNoProperty UUID associated with the booking.
totalPriceNoTotal amount in minor currency units.
propertyNameNoDisplay name of the booked property.
reservationIdYesEchoed booking or reservation UUID.
propertyDomainNoHost-owned domain associated with the property.
cancellationPolicyNoHost cancellation-policy details applicable to this booking.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (readOnlyHint, idempotentHint, destructiveHint), the description discloses important behavioral traits: requires Authorization: Bearer token, returns guest PII (name, email), is rate-limited per token, and clarifies the input is specifically the reservationId from checkout/create. These additions provide critical context not present in annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is 4 sentences, each concise and purposeful. The first sentence states the core functionality. Subsequent sentences add use cases, auth, data sensitivity, rate limiting, and input origin. No redundant or unnecessary information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a single parameter and an existing output schema, the description provides all necessary context: input requirements (reservationId format and source), auth requirements, data sensitivity warning, rate limits, and use cases. It does not need to explain return values because the output schema handles that. Complete for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema describes the uuid format and purpose of reservationId. The description adds semantic value by specifying that the ID must come from hemmabo_booking_checkout or hemmabo_booking_create (not a propertyId), which is a constraint not obvious from the schema alone. Since schema coverage is 100% and description enriches it further, score is above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Retrieve current status and full details of an existing booking by reservationId', specifying a clear verb ('Retrieve'), resource ('booking'), and input key ('reservationId'). It distinguishes the tool from siblings by stating the input must come from hemmabo_booking_checkout or hemmabo_booking_create, not from propertyId, clearly differentiating it from search and 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states 'Use to confirm checkout/create succeeded or before cancel/reschedule', providing concrete when-to-use scenarios. It implies alternatives (cancel, reschedule tools) and explains read-only nature, giving agents clear guidance on appropriate invocation context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hemmabo_compare_propertiesA
Read-onlyIdempotent
Inspect

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 hemmabo_search_properties first. Returns one entry per propertyId, sorted by direct host-source total (cheapest first), with unavailable properties last. Do not present discounts or savings in guest-facing copy. All propertyIds are priced on the one shared checkIn/checkOut range and guests count, so entries are directly comparable; pass 2–10 UUIDs from search, never domains or names.

ParametersJSON Schema
NameRequiredDescriptionDefault
guestsYesTotal guest count as a positive integer (e.g. 2, 4, 6). Used for capacity filtering and staircase pricing tiers. Properties with maxGuests below this value are excluded from search results.
checkInYesArrival date in ISO 8601 calendar format YYYY-MM-DD (e.g. '2026-07-15'). Must be today or later in the property's timezone. Must be strictly before checkOut; together they define the stay length used for pricing and availability.
checkOutYesDeparture date in ISO 8601 calendar format YYYY-MM-DD (e.g. '2026-07-22'). Must be strictly after checkIn on the same calendar. The guest does not stay the departure night.
propertyIdsYesOrdered list of 2–10 property UUIDs to compare on the same dates. All IDs must come from hemmabo_search_properties; do not pass host domains, names, or booking URLs.

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNoNumber of compared properties returned.
errorNoPresent only when isError=true.
guestsNo
checkInNo
checkOutNo
comparisonNoOne entry per requested propertyId, sorted by direct host-source total (cheapest first), unavailable last.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds behavioral details: returns one entry per propertyId, sorted by cheapest direct host-source total first with unavailable last, and warns against presenting discounts in guest-facing copy. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense, front-loaded sentences with zero wasted words. Every sentence provides essential information: purpose, usage, return format, and constraints. Highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the moderate complexity (comparing up to 10 properties), full schema coverage, and existence of an output schema, the description covers all key aspects: intended use, constraints on inputs, output ordering, and a critical business rule about discounts. It is complete for the agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so schema already documents parameters. Description adds crucial guidance: propertyIds must be UUIDs from hemmabo_search_properties, never domains or names, and all share the same checkIn/checkOut/guests for direct comparability. This adds value beyond schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool compares availability and pricing for 2-10 specific properties on the same dates. It distinguishes from sibling tools like hemmabo_search_properties by specifying this is for side-by-side comparison after discovery. The verb 'compare' and resource 'properties' are specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly provides when to use (user deciding between multiple properties) and when not to use (use hemmabo_search_properties for discovery). Names the alternative tool directly, making it clear to the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hemmabo_host_readiness_checkA
Read-onlyIdempotent
Inspect

Read-only fit check for a vacation-rental host evaluating HemmaBo for an own-domain booking engine. Use when the user is a host or property owner, not a guest booking a stay. Returns a fit verdict, what the host gets, the setup inputs to prepare, and a safe onboarding next step. Does not create an account, buy a domain, configure Stripe, store host data, or provision a website. Every parameter is optional and additive — the more you pass (propertyType, country/region/city, domain, currentChannels, and the wants* booleans), the sharper the fit verdict; with none it returns a generic readiness summary.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoCity or municipality (e.g. 'Kävlinge', 'Florence'). Optional; used in onboarding URL prefill when provided.
domainNoHost-owned domain without protocol or path (e.g. 'villaakerlyckan.se', 'myvilla.it'). Optional; omit when the host has not chosen a domain yet. Invalid: 'https://...', paths, ports, or booking URLs.
regionNoRegion or area (e.g. 'Skåne', 'Toscana', 'Marrakech-Safi'). Optional; narrows onboarding handoff and proof examples.
countryNoCountry where the property operates (e.g. 'Sweden', 'Italy', 'Morocco'). Optional; improves onboarding URL locale and fit assessment.
hasOwnDomainNoTrue if the host already owns a domain or explicitly wants one (e.g. true for 'I have villaakerlyckan.se'). False or omit when still undecided.
propertyNameNoProperty or business display name (e.g. 'Villa Åkerlyckan'). Optional; carried into onboarding URL when provided.
propertyTypeNoProperty category enum. Optional; omit when unknown. 'villa'/'holiday_home' fit best; 'hotel' may indicate a poor HemmaBo fit for large chains.
currentChannelsNoOptional list of channels the host uses today. Omit when unknown. Helps assess migration fit from OTAs to own-domain booking.
preferredLanguageNoISO 639-1 language hint for onboarding copy (e.g. 'sv', 'en', 'de', 'fr'). Optional; omit to default to English.
wantsAiAgentBookingNoTrue if the host wants AI agents (ChatGPT, Claude, Cursor) to discover and book via their own domain. False or omit when they only want a guest website.
wantsDirectPaymentsNoTrue if the host wants Stripe Connect payouts direct to their account. False or omit when they expect HemmaBo to be merchant of record (not supported).

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesTrue when the fit check completed.
productYesHemmaBo product summary, pricing, onboarding URL, and live proof URLs.
next_stepYesSafe handoff action for the host.
readinessYesFit verdict and boundaries for the host's described need.
setup_itemsYesInputs the host should prepare before onboarding.
capabilitiesYesHost-facing capabilities included in HemmaBo.
agent_instructionYesHow an AI agent should describe HemmaBo without overclaiming.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description does not need to repeat basic safety. However, it adds valuable context: 'Does not create an account, buy a domain, configure Stripe, store host data, or provision a website.' This reinforces the read-only nature and clarifies what side effects are absent. 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two paragraphs and around 200 words. It is front-loaded with the purpose and usage, followed by behavioral notes and parameter advice. While clear and well-organized, it could be slightly more concise without losing critical details. Overall, every sentence earns its place, but minor redundancy exists.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (11 optional parameters, 100% schema coverage), the description is comprehensive. It states what the tool returns, when to use it, what it does not do, and how parameters affect the output. An output schema exists (not shown), so the description need not detail return values. The description covers all necessary aspects for an agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all 11 parameters. The description adds extra guidance: 'Every parameter is optional and additive — the more you pass... the sharper the fit verdict; with none it returns a generic readiness summary.' It also provides semantic tips, such as noting that propertyType values 'villa'/'holiday_home' fit best and 'hotel' may indicate poor fit. This goes beyond mere schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool is a 'Read-only fit check for a vacation-rental host evaluating HemmaBo for an own-domain booking engine.' It specifies a specific verb and resource, and clearly distinguishes from guest booking tools by noting 'not a guest booking a stay.' The description also lists what the tool returns (fit verdict, what host gets, setup inputs, onboarding next step), making the purpose very clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: 'Use when the user is a host or property owner, not a guest booking a stay.' It also lists actions the tool does NOT perform (e.g., does not create an account, buy a domain). However, it does not explicitly contrast with sibling tools like 'hemmabo_host_onboarding_link' to guide when to use this check versus proceeding to onboarding. This slight omission prevents a perfect score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hemmabo_search_availabilityA
Read-onlyIdempotent
Inspect

Check whether a specific property is available for the requested dates. Use this tool after the user has selected a property from hemmabo_search_properties and wants to confirm availability before getting a quote. Do NOT use for general browsing — use hemmabo_search_properties instead. Returns available=true/false with conflict details and same-month alternative date windows when unavailable. Use the propertyId from search with the exact checkIn/checkOut range; omit guests to check dates only, or pass it to get host-source totals for that party size in the returned alternative windows.

ParametersJSON Schema
NameRequiredDescriptionDefault
guestsNoOptional guest count (e.g. 4). Omit when only checking date availability without pricing. When provided, alternative date windows in the response include live host-source totals for that guest count.
checkInYesArrival date in ISO 8601 calendar format YYYY-MM-DD (e.g. '2026-07-15'). Must be today or later in the property's timezone. Must be strictly before checkOut; together they define the stay length used for pricing and availability.
checkOutYesDeparture date in ISO 8601 calendar format YYYY-MM-DD (e.g. '2026-07-22'). Must be strictly after checkIn on the same calendar. The guest does not stay the departure night.
propertyIdYesStable property UUID from hemmabo_search_properties (e.g. '550e8400-e29b-41d4-a716-446655440000'). Pass the exact UUID string — never a property name, host domain, or booking URL.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when isError=true.
reasonNoReason when available=false.
checkInNo
checkOutNo
availableYesTrue if the property is bookable for the entire range.
propertyIdNo
alternativeDatesNoNearby same-month date windows to offer when the requested dates are unavailable.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. Description adds return value details (available=true/false with conflict details and alternative windows) and behavior of the guests parameter. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is around 110 words, well-structured into two main sentences. Front-loads core purpose and usage, with no redundant or superfluous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 covers all necessary aspects: purpose, usage sequence, parameter constraints, return value structure, and alternative windows. Complete for a checking tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with parameter descriptions. Description adds crucial context: for propertyId, instructs to use exact UUID; for guests, explains omission for date-only checks and its effect on alternative windows; for checkIn/checkOut, emphasizes strict ordering and stay length definition. This adds significant value beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool checks property availability for dates, using specific verb 'check' and resource 'availability'. Distinguishes from sibling tools like hemmabo_search_properties for general browsing and hemmabo_booking_quote for quotes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs to use after property selection from hemmabo_search_properties and before getting a quote, and warns against using for general browsing, directly naming the alternative tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hemmabo_search_propertiesA
Read-onlyIdempotent
Inspect

Search available vacation rental properties by location and travel dates. Use when the user wants to find or browse places to stay. Discovery only — call get_verified_stay_offer with the host domain and same dates before the final answer so the client can render the verified stay offer widget; never quote a final price or booking link from search alone. Do NOT use when the user already has a propertyId or host domain. Returns propertyId, host domain, live availability, host-source pricing, and capacity. Parameters combine as one filter: give at least one of region or country to scope location, plus guests and the checkIn/checkOut range (checkIn strictly before checkOut) — results drop any property below the guest capacity or unavailable for that exact range.

ParametersJSON Schema
NameRequiredDescriptionDefault
guestsYesTotal guest count as a positive integer (e.g. 2, 4, 6). Used for capacity filtering and staircase pricing tiers. Properties with maxGuests below this value are excluded from search results.
regionNoRegion, area, or destination to search within (e.g. 'Skåne', 'Kävlinge', 'Toscana', 'Bavaria'). Partial case-insensitive match. Provide at least one of region or country; omit only when country alone is sufficient.
checkInYesArrival date in ISO 8601 calendar format YYYY-MM-DD (e.g. '2026-07-15'). Must be today or later in the property's timezone. Must be strictly before checkOut; together they define the stay length used for pricing and availability.
countryNoCountry name to filter by (e.g. 'Sweden', 'Italy', 'Morocco'). Partial case-insensitive match. Provide at least one of region or country; omit when region already narrows the destination.
checkOutYesDeparture date in ISO 8601 calendar format YYYY-MM-DD (e.g. '2026-07-22'). Must be strictly after checkIn on the same calendar. The guest does not stay the departure night.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when isError=true.
guestsNoEchoed guest count.
checkInNoEchoed check-in date (YYYY-MM-DD).
checkOutNoEchoed check-out date (YYYY-MM-DD).
propertiesNoAvailable properties matching the search criteria, with live host-source pricing.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and idempotentHint, but the description adds valuable context about being 'discovery only' and warns against quoting final prices, plus notes required follow-up call, which enriches transparency 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single paragraph with some repetition (checkIn/checkOut order mentioned twice) but is overall efficient and front-loaded with the core purpose, earning its sentences with actionable information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-parameter tool with an output schema, the description covers purpose, usage conditions, parameter combining logic, return fields, and required follow-up tool call, leaving no critical gaps for an AI agent to interpret correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds combining rules (at least one of region or country, checkIn before checkOut, guest capacity filtering), which provides meaningful context beyond the schema's individual parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches vacation rental properties by location and dates, and distinguishes it from siblings like get_verified_stay_offer by specifying it is for discovery only and when the user lacks a propertyId or host domain.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use ('find or browse places to stay') and when not to use ('already has propertyId or host domain'), and directs to call get_verified_stay_offer for final pricing, providing clear context and alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hemmabo_search_similarA
Read-onlyIdempotent
Inspect

Find vacation rental properties similar to a given property on specific dates. Use this tool after the user has selected a property (via hemmabo_search_properties) and wants to see alternatives — same region, same property type, same or larger capacity. Do NOT use for the initial search; use hemmabo_search_properties instead. Returns a list of similar available properties with live pricing, excluding the source property. Matches are anchored to the source propertyId over the given checkIn/checkOut range; omit guests to inherit the source property's capacity, and raise limit to widen the alternative set (default 5).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of similar properties to return (integer 1–20). Omit to use server default 5. Increase when the guest wants more alternatives.
guestsNoOptional guest count (e.g. 4). Omit to use the source property's maxGuests for matching and pricing. When provided, filters alternatives that cannot accommodate this count.
checkInYesArrival date in ISO 8601 calendar format YYYY-MM-DD (e.g. '2026-07-15'). Must be today or later in the property's timezone. Must be strictly before checkOut; together they define the stay length used for pricing and availability.
checkOutYesDeparture date in ISO 8601 calendar format YYYY-MM-DD (e.g. '2026-07-22'). Must be strictly after checkIn on the same calendar. The guest does not stay the departure night.
propertyIdYesStable property UUID from hemmabo_search_properties (e.g. '550e8400-e29b-41d4-a716-446655440000'). Pass the exact UUID string — never a property name, host domain, or booking URL.

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNoNumber of similar properties returned.
errorNoPresent only when isError=true.
guestsNoEffective guest count used for matching and pricing.
checkInNo
checkOutNo
sourcePropertyIdNoThe property similar listings were found for.
similarPropertiesNoSimilar available properties (same region, same type, same/larger capacity), sorted by direct host-source total.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint, destructiveHint, idempotentHint. The description adds context about live pricing, source exclusion, anchoring to propertyId/date range, and parameter behavior (omit guests inherits capacity, raise limit widens set). 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded with purpose, then usage context, then return info, then parameter hints. Every sentence adds value with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists, the description sufficiently explains return (list of similar available properties with live pricing, excluding source). Combined with high schema coverage and annotations, it is complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds useful context beyond schema, e.g., for limit: 'raise limit to widen the alternative set (default 5)' and for guests: 'omit to use the source property's capacity'. This elevates to 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Find' and resource 'vacation rental properties similar to a given property' on specific dates. It explicitly distinguishes from sibling hemmabo_search_properties by noting not to use for initial search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit when-to-use (after property selection for alternatives) and when-not-to-use ('Do NOT use for the initial search'), and names the alternative tool (hemmabo_search_properties).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_vacation_rental_nodeA
Read-onlyIdempotent
Inspect

Verify that a vacation-rental host domain is a valid Vacation Rental Protocol (VRP) node before trusting it. Reads the domain's .well-known/vacation-rental.json and JWKS. Read-only trust check: no availability, pricing, booking, or payment. On success, call get_verified_stay_offer with the same domain and stay dates. The single input is the host domain as a bare hostname (no scheme or path); verification reads that domain's own .well-known and JWKS, so the result is only as trustworthy as the exact domain you pass.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesHost-owned domain without protocol or path (e.g. 'villaakerlyckan.se', 'myvilla.it'). Optional; omit when the host has not chosen a domain yet. Invalid: 'https://...', paths, ports, or booking URLs.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when verified=false or the node cannot be checked.
domainYesEchoed canonical host domain that was checked.
signingNoSummary of accepted signing algorithms, key ids, and signing-key checks.
jwks_urlNoHost-domain JWKS URL containing the Ed25519 public keys used to verify signed offers.
protocolNoProtocol identifier discovered on the host domain, typically 'vrp'.
verifiedYesTrue only when discovery, JWKS, signing metadata, and verified-offer endpoint checks pass.
discovery_urlNoThe .well-known vacation-rental discovery URL read from the host domain.
protocol_versionNoVRP version declared by the host discovery document.
verified_stay_offer_urlNoHost-domain endpoint template or URL used to request signed verified stay offers.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description reinforces this with 'Read-only trust check: no availability, pricing, booking, or payment.' It adds context about the verification method (reads .well-known and JWKS) and a trustworthiness caveat about the domain passed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences: the first states the purpose, the second provides context on input and behavior. Every sentence contributes value with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (single required parameter, output schema present), the description is complete. It explains the tool's role, the verification process, input constraints, and the follow-up action, all while annotations cover safety aspects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema description is already detailed. The description goes further by explaining what the tool does with the domain (reads .well-known and JWKS) and the implication that the result's trustworthiness depends on the exact domain, adding value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Verify that a vacation-rental host domain is a valid Vacation Rental Protocol (VRP) node before trusting it,' providing a specific verb and resource. It distinguishes from siblings by noting that on success, one should call get_verified_stay_offer, positioning this tool as a prerequisite.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly states when to use the tool ('before trusting') and what to do after success ('call get_verified_stay_offer'). It also explains the input constraint (bare hostname) but does not explicitly list situations where the tool should not be used.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Discussions

No comments yet. Be the first to start the discussion!

Try in Browser

Your Connectors

Sign in to create a connector for this server.