Skip to main content
Glama

HemmaBo Host Booking Engine

Server Details

6 runtime tools: 2 HemmaBo tools, 2 host onboarding tools, and 2 VRP verification tools. Not an OTA.

Ownership verified
Status
Healthy
Uptime
100.0% over 52 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
HemmaBo-se/hemmabo-mcp-server
GitHub Stars
3
Server Listing
HemmaBo

TDQS

A4.6/5.0

Scored across 6 tools

Disambiguation4/5

Guest tools (search_properties vs check_availability) are cleanly separated by descriptions, and the VRP tools (verify_node vs get_verified_stay_offer) target distinct steps. The only real overlap is check_host_readiness vs get_host_onboarding_link, which both return the same URL, but the descriptions explicitly warn against calling both in one turn.

Naming Consistency4/5

Every name follows a verb_noun pattern (check_availability, search_properties, get_verified_stay_offer, verify_node). The mix of two prefixes (hemmabo_ and vrp_) reflects two subsystems rather than erratic naming, so it stays predictable.

Tool Count5/5

Six tools is well-scoped for a discovery-to-handoff booking flow, and each covers a distinct stage (search, availability, signed offer, node trust, host fit, host onboarding). Nothing feels redundant or padded.

Completeness4/5

The guest path search -> availability -> verified offer -> booking handoff is fully covered, and the host path covers fit and onboarding. Booking/payment deliberately live off-platform, but there is no property-detail retrieval and host-side coverage stops at the onboarding link.

Available Tools

6 tools
hemmabo_check_availabilityCheck AvailabilityA
Read-only
Inspect

Use this tool to answer "is it free these dates?" for one known propertyId — a yes/no with conflict details, no signed price. For the final quoted price and booking link, use vrp_get_verified_stay_offer with the host domain instead. Never present this tool's numbers as the final price. 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. Read-only, open to anonymous callers (no Bearer token), and rate-limited: checking availability never places a hold or reserves dates. Returns available=true/false with conflict details and, when unavailable, the host node's own next available window (alternativeDates, at most one entry — the same window the node's /api/availability reports, never a platform-invented date); a stale inbound calendar sync blocks an available answer (fails closed with calendar_freshness) instead of guessing. Omit guests to check dates only; pass it to price the alternative windows and to gate capacity — counts above the property's maximum return available=false (guests_exceed_max) with no alternatives. Stays shorter than the host's effective minimum nights return available=false with reasonCode min_nights_violation — extend the stay rather than shifting dates. The verdict always matches the host node's own availability API. Booking and payment happen only on the host's own domain, at the signed direct_booking_url. The agent never books, pays, cancels or changes a booking.

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
channel_mirrorNoOutbound channel-manager mirror heartbeat for the host's mapped external channel (status: current|stale|partial|error|not_connected). Informational only — it never affects `available`; the host node is the source of truth for these dates.
alternativeDatesNoThe host node's own next available window (at most one) to offer when the requested dates are unavailable — identical to the node's /api/availability nextAvailable. Empty when the node offers none.
calendar_freshnessNoIncoming OTA calendar-sync freshness at answer time. The same object is embedded in the error payload when a stale calendar blocks the call — declared here so agents can treat it as a first-class field in both outcomes.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already cover read-only/non-destructive, but the description adds substantial context beyond them: anonymous access with no Bearer token, rate limiting, no hold or reservation ever placed, fail-closed behavior on stale inbound calendar sync (calendar_freshness), and the exact failure reasonCodes (guests_exceed_max, min_nights_violation). It also clarifies that booking and payment happen only on the host domain, giving the agent a complete behavioral picture.

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 routing and never-present-as-price warnings are front-loaded, and most sentences carry unique constraints. There is mild redundancy between 'the same window the node's /api/availability reports' and the later 'verdict always matches the host node's own availability API,' and the block is long, but it is dense with non-repeating rules rather than filler.

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?

An output schema exists so return values need not be spelled out, yet the description still summarizes the key response semantics (available=true/false with conflict details, at most one alternativeDates window). Combined with the auth, rate-limit, capacity, and min-nights rules, an agent has everything required to invoke it correctly and interpret the result.

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, but the description adds real meaning beyond it: omitting guests checks dates only, and passing it both prices alternative windows and gates capacity, with counts above the property maximum returning available=false. It also ties checkIn/checkOut to stay length and the min-nights rule, though it does not add format detail to propertyId 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?

States a specific verb and resource ('Check whether a specific property is available for the requested dates') and frames it as the yes/no availability question for one known propertyId. It distinguishes itself from hemmabo_search_properties (browsing) and vrp_get_verified_stay_offer (signed price/booking link) without the agent needing to open either schema.

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 names when to use it (after the user selects a property and wants to confirm availability before a quote) and when not to (general browsing -> hemmabo_search_properties; final price -> vrp_get_verified_stay_offer). It also instructs the agent to never present this tool's numbers as the final price, which is a concrete routing constraint.

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

hemmabo_check_host_readinessHost Readiness CheckA
Read-only
Inspect

Use this tool when a host is still EVALUATING whether HemmaBo fits; use hemmabo_get_host_onboarding_link only when the host has decided and wants to start. Never call both in the same turn — this tool's next_step already contains the same onboarding URL. Read-only fit check for a vacation-rental host evaluating HemmaBo for their own booking website or booking engine. Use when the user is a host or property owner, not a guest booking a stay; guests should use hemmabo_search_properties instead. 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. When the host is ready to start, follow up with hemmabo_get_host_onboarding_link. Only five inputs sharpen the fit verdict: a domain (hasOwnDomain or domain), currentChannels, one location signal (city/region/country), and the wants* booleans, which count unless explicitly false — omitting them never lowers the verdict; propertyName and preferredLanguage only prefill the onboarding URL, and with no inputs the summary is generic. Booking and payment happen only on the host's own domain, at the signed direct_booking_url. The agent never books, pays, cancels or changes a booking.

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 their own booking website.
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 official website. 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: the category sentence, the host's subscription price atom, and the onboarding URL.
next_stepYesSafe handoff action for the host.
readinessYesFit verdict and boundaries for the host's described need.
agent_roleYesWhat a compatible agent does: discover the host domain, verify the signed stay offer, send the guest to that domain to book. The agent does not book.
setup_itemsYesInputs the host should prepare before onboarding.
agent_instructionYesHow an AI agent should describe HemmaBo without overclaiming.

TDQS

A5/5.0
Behavior5/5

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

Annotations confirm read-only safety, and the description adds substantial non-obvious behavior: it does not create accounts, buy domains, configure Stripe, store host data, or provision websites; booking and payment occur only on the host's own signed direct_booking_url; and the agent never books, pays, cancels, or changes bookings. It also discloses that this tool's next_step already includes the onboarding URL, preventing a duplicate tool call.

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?

Front-loads the triggering condition and the sibling routing rule, then layers scope, exclusions, and parameter weighting. Although long, every sentence carries routing, behavioral, or parameter semantics, and there is no filler or restatement of the structured schema.

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 an 11-parameter tool with an output schema, rich annotations, and five sibling tools, the description covers selection, exclusion, behavioral boundaries, parameter effects, and next-step coordination. Nothing an agent needs in order to call it correctly or avoid a duplicate call is missing.

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?

Though the schema already documents every parameter, the description adds semantic grouping and omission behavior the schema does not: only domain/hasOwnDomain, currentChannels, one location signal, and wants* booleans sharpen the verdict; wants* count unless explicitly false; omissions never lower the verdict; propertyName and preferredLanguage only prefill the onboarding URL; and no inputs produce a generic summary.

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?

States a specific verb and resource ('read-only fit check for a vacation-rental host evaluating HemmaBo') and distinguishes itself from siblings by naming hemmabo_get_host_onboarding_link and hemmabo_search_properties with the conditions that select each. An agent can route correctly without opening any schema.

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

Usage Guidelines5/5

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

Explicitly says when to use this tool ('when a host is still EVALUATING'), when not to use it ('only when the host has decided'), names the alternative for each case, and adds a hard coordination rule: never call both in the same turn. Also excludes guests by routing them to hemmabo_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_propertiesSearch PropertiesA
Read-only
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, and price-free: call vrp_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; the price and the signed booking link come only from that offer. Do NOT use when the user already has a propertyId or host domain. Returns propertyId, host domain, the host's booking_url, live availability and capacity. Parameters combine as one filter with guests and the checkIn/checkOut range (checkIn strictly before checkOut): region matches broadly against region, city, and country names, while country matches the country field alone — omit both and the search spans every published property. Capacity misses are excluded; date-unavailable matches return separately in unavailableMatches with up to three alternative windows. Booking and payment happen only on the host's own domain, at the signed direct_booking_url. The agent never books, pays, cancels or changes a booking.

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 against region, city, and country. Optional — omit both region and country and the search spans every published property.
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 against the country field. Optional — omit both region and country and the search spans every published property.
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: each host domain and its own booking URL, without a price.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds substantial non-obvious behavior on top: results are price-free, prices and signed booking links come only from the offer tool, capacity misses are dropped while date misses surface in unavailableMatches with up to three alternates, and booking/payment happen only on the host's domain. It also explicitly bounds agent behavior ('never books, pays, cancels or changes a booking').

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?

Purpose and usage are front-loaded in the first two sentences, and nearly every later sentence carries operational payload (follow-up call, failure handling, booking domain). However, the single dense paragraph packs several independent concerns together and repeats the checkIn/checkOut constraint already in the schema, costing some readability.

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?

An output schema exists, yet the description still notes the key returned fields and, more importantly, covers the partial-failure path (unavailableMatches) and the mandatory offer-widget step the agent must complete. For a 5-parameter discovery tool with a downstream dependency, nothing needed for correct invocation is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description genuinely adds semantics the schema does not: parameters combine into a single filter, region performs a broad match across region/city/country while country matches only the country field, and omitting both widens the search to every published property. It also restates the checkIn-strictly-before-checkOut constraint, which is already covered in 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?

Opens with a specific verb+resource+scope: 'Search available vacation rental properties by location and travel dates.' It also distinguishes itself from siblings by naming vrp_get_verified_stay_offer and stating the condition that excludes this tool (user already has 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?

Gives when-to-use ('find or browse places to stay'), when-not ('Do NOT use when the user already has a propertyId or host domain'), and a mandatory next step ('call vrp_get_verified_stay_offer ... before the final answer'). The routing decision is fully specified without inference.

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

vrp_get_verified_stay_offerGet Verified Stay OfferA
Read-only
Inspect

Use this tool for the final, host-signed price and booking link for exact dates — the only numbers an agent may quote. For a bare availability yes/no on a propertyId, hemmabo_check_availability is lighter and sufficient. 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 hemmabo_search_properties returns a host domain, or after vrp_verify_node confirms a domain from outside search, always before quoting final price or a booking link. Read-only: must not lock a quote, create a booking or collect guest details. Route booking only to the signed direct_booking_url. 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. Always pass language as the guest's actual conversation language so the rendered widget matches the guest; it never affects the signed price or availability, only formatting. Booking and payment happen only on the host's own domain, at the signed direct_booking_url. The agent never books, pays, cancels or changes a booking.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesHost-owned domain without protocol or path (e.g. 'villaakerlyckan.se', 'myvilla.it'). 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.
languageNoThe guest's conversation language, as a BCP-47 tag (e.g. 'en', 'sv', 'de', 'sv-SE') — ALWAYS pass this, matching the language the guest is chatting in, so the rendered widget's labels, dates and currency formatting match the guest instead of falling back to the rendering client's own locale (which can silently disagree with the conversation). Never changes the signed price value or availability — only how it is displayed.

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 a price, a lower price, savings, availability, comparisons, or booking details.

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the readOnlyHint/openWorldHint annotations, it discloses the verification mechanism (Ed25519 JWS against domain JWKS), hard behavioral constraints (must not lock a quote, create a booking or collect guest details), the routing rule (booking only to the signed direct_booking_url), and where booking/payment actually occur. This is substantial context the annotations alone do not convey.

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

Conciseness4/5

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

The critical constraints are front-loaded and each sentence carries instruction. It is somewhat long and repeats the booking-on-host-domain idea across two sentences, but no sentence is pure filler, so it stays efficient for a tool with this much behavior to convey.

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?

An output schema exists, so return-value detail is unnecessary. Given the 5-parameter schema, an open-world read tool, and the multi-step workflow, the description covers prerequisites, parameter coupling, date validation, pricing behavior, and downstream booking routing — enough for correct invocation.

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, but the description adds relational semantics beyond the schema: 'the parameters work as a set' with matching domain/dates/guests from search, and the key insight that night count — not the dates themselves — drives signed price and capacity checks, meaning changing either date re-prices. It also explains language's non-effect on price. This genuinely extends 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 states a specific verb and resource — fetch, verify and render a live host-domain signed VRP stay offer for exact dates and guest count — and explicitly contrasts itself with siblings ('For a bare availability yes/no on a propertyId, hemmabo_check_availability is lighter and sufficient'). An agent can tell it apart from hemmabo_search_properties and vrp_verify_node without opening any schema.

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

Usage Guidelines5/5

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

It gives explicit ordering conditions: call after hemmabo_search_properties returns a host domain, or after vrp_verify_node confirms a domain from outside search, and always before quoting final price or a booking link. It also names the lighter alternative for the availability case, so both when-to-use and when-not-to-use are covered.

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

vrp_verify_nodeVerify Vacation Rental NodeA
Read-only
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 — do NOT use it to answer those questions. Use when a host domain arrives from outside search (user-typed or third-party); domains returned by hemmabo_search_properties can go straight to vrp_get_verified_stay_offer. On success, call vrp_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); public domains only — IPs, ports, and local/private hostnames are refused. Pass the node's canonical domain exactly — www and apex are distinct identities, and verification fails when the domain's declared canonical_domain differs from the one you passed. Verification reads that domain's own .well-known and JWKS, so the result is only as trustworthy as the exact domain you pass. Booking and payment happen only on the host's own domain, at the signed direct_booking_url. The agent never books, pays, cancels or changes a booking.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesHost-owned domain without protocol or path (e.g. 'villaakerlyckan.se', 'myvilla.it'). 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. A valid node declares exactly 'vacation-rental-protocol' in its .well-known/vacation-rental.json protocol field, and that is the value returned here.
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.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnly/destructive/openWorld, and the description adds real behavioral context beyond them: it discloses that it fetches .well-known/vacation-rental.json and JWKS, that trust is bounded by the exact domain passed, that IPs/ports/local hostnames are refused, and that booking/payment happen only on the host's own signed direct_booking_url.

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?

Front-loaded with the core purpose and read-only scope, then sequenced into constraints and next steps. It is on the long side and the closing two sentences about booking/payment and the agent never booking are somewhat redundant, but each sentence still carries operational value.

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?

An output schema exists, so return-value explanation is unnecessary, and the description covers everything else an agent needs: preconditions, exact-input rules, refusal cases, and the downstream call. Complete for a single-parameter verification 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% and the schema already gives the pattern and invalid examples, so baseline is 3. The description adds genuine meaning beyond it — bare hostname form, refusal of IPs/ports/private hostnames, and the critical www-vs-apex canonical-domain identity rule that causes verification to fail on mismatch.

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?

States a specific verb (verify) and resource (VRP node / host domain) and explicitly scopes it as a trust check separate from availability, pricing, booking, or payment. It names the sibling tools it routes to and from, so an agent can distinguish it without opening any schema.

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

Usage Guidelines5/5

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

Gives explicit when-to-use (host domain arriving from outside search, user-typed or third-party) and when-not-to-use (domains from hemmabo_search_properties should go straight to vrp_get_verified_stay_offer), plus the required follow-up call with the same domain and dates. Nothing is left to inference.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changedhemmabo_search_properties8 fields changed
      • changedOutput schema / properties / properties / description
        Previous value: -"Available properties matching the search criteria, with live host-source pricing."New value: +"Available properties matching the search criteria: each host domain and its own booking URL, without a price."
      • removedOutput schema / properties / properties / items / properties / currency
        Removed value: -{
        -  "description": "ISO 4217 currency code (e.g. 'SEK', 'EUR').",
        -  "type": "string"
        -}
      • removedOutput schema / properties / properties / items / properties / directBookingTotal
        Removed value: -{
        -  "description": "Preferred field for user-facing copy: direct host-source total, in whole units of the property's currency (not minor units).",
        -  "type": "integer"
        -}
      • removedOutput schema / properties / properties / items / properties / federationTotal
        Removed value: -{
        -  "description": "Legacy field: the direct host-source total (the same value as directBookingTotal), in whole units of the property's currency (not minor units). Use directBookingTotal in user-facing copy.",
        -  "type": "integer"
        -}
      • removedOutput schema / properties / properties / items / properties / hostSourcePublicTotal
        Removed value: -{
        -  "description": "Preferred field for user-facing copy: public host-source total for the date range, in whole units of the property's currency (not minor units).",
        -  "type": "integer"
        -}
      • removedOutput schema / properties / properties / items / properties / packageApplied
        Removed value: -{
        -  "description": "Package applied (e.g. week or two_weeks), if any.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / properties / items / properties / publicTotal
        Removed value: -{
        -  "description": "Standard website total for the date range, in whole units of the property's currency (not minor units).",
        -  "type": "integer"
        -}
      • changedOutput schema / properties / properties / items / required
        Previous value: -[
        -  "propertyId",
        -  "name",
        -  "maxGuests",
        -  "federationTotal"
        -]New value: +[
        +  "propertyId",
        +  "name",
        +  "maxGuests"
        +]
  2. 1 tool update
    • Changedhemmabo_search_properties5 fields changed
      • changedOutput schema / properties / properties / items / properties / directBookingTotal / description
        Previous value: -"Preferred field for user-facing copy: direct host-source total, in minor currency units."New value: +"Preferred field for user-facing copy: direct host-source total, in whole units of the property's currency (not minor units)."
      • changedOutput schema / properties / properties / items / properties / federationTotal / description
        Previous value: -"Legacy field: the direct host-source total (the same value as directBookingTotal), in minor currency units. Use directBookingTotal in user-facing copy."New value: +"Legacy field: the direct host-source total (the same value as directBookingTotal), in whole units of the property's currency (not minor units). Use directBookingTotal in user-facing copy."
      • changedOutput schema / properties / properties / items / properties / hostSourcePublicTotal / description
        Previous value: -"Preferred field for user-facing copy: public host-source total for the date range, in minor currency units."New value: +"Preferred field for user-facing copy: public host-source total for the date range, in whole units of the property's currency (not minor units)."
      • changedOutput schema / properties / properties / items / properties / propertyId / description
        Previous value: -"Stable UUID. Pass to subsequent tools (hemmabo_check_availability)."New value: +"Stable property UUID."
      • changedOutput schema / properties / properties / items / properties / publicTotal / description
        Previous value: -"Standard website total for the date range, in minor currency units."New value: +"Standard website total for the date range, in whole units of the property's currency (not minor units)."
  3. 11 tool updates
    • Removedget_verified_stay_offer
    • Addedhemmabo_check_availability
    • Addedhemmabo_check_host_readiness
    • Addedhemmabo_get_host_onboarding_link
    • Removedhemmabo_host_onboarding_link
    • Removedhemmabo_host_readiness_check
    • Removedhemmabo_search_availability
    • Changedhemmabo_search_properties1 field changed
      • changedOutput schema / properties / properties / items / properties / propertyId / description
        Previous value: -"Stable UUID. Pass to subsequent tools (availability)."New value: +"Stable UUID. Pass to subsequent tools (hemmabo_check_availability)."
    • Removedverify_vacation_rental_node
    • Addedvrp_get_verified_stay_offer
    • Addedvrp_verify_node
  4. 3 tool updates
    • Changedget_verified_stay_offer1 field changed
      • changedOutput schema / properties / official_offer_summary / description
        Previous value: -"Small signed-offer summary for agents to quote without inventing price, availability, discounts, savings, comparisons, or booking details."New value: +"Small signed-offer summary for agents to quote without inventing a price, a lower price, savings, availability, comparisons, or booking details."
    • Changedhemmabo_search_availability1 field changed
      • removedOutput schema / properties / alternativeDates / items / properties / federationDiscountPercent
        Removed value: -{
        -  "type": "number"
        -}
    • Changedhemmabo_search_properties3 fields changed
      • removedOutput schema / properties / properties / items / properties / directBookingDiscountPercent
        Removed value: -{
        -  "description": "Legacy internal field. Do not present this as a guest-facing discount, savings, or comparison.",
        -  "type": "integer"
        -}
      • removedOutput schema / properties / properties / items / properties / federationDiscountPercent
        Removed value: -{
        -  "description": "Legacy internal field. Do not present this as a guest-facing discount, savings, or comparison.",
        -  "type": "integer"
        -}
      • changedOutput schema / properties / properties / items / properties / federationTotal / description
        Previous value: -"Legacy field: direct host-source total, in minor currency units. Do not label this as a HemmaBo platform, federation, OTA, marketplace, comparison, discount, or savings price in user-facing copy."New value: +"Legacy field: the direct host-source total (the same value as directBookingTotal), in minor currency units. Use directBookingTotal in user-facing copy."
  5. 2 tool updates
    • Changedhemmabo_host_onboarding_link4 fields changed
      • addedOutput schema / properties / agent_role
        Added value: +{
        +  "description": "What a compatible agent does: discover the host domain, verify the signed stay offer, send the guest to that domain to book. The agent does not book.",
        +  "type": "string"
        +}
      • removedOutput schema / properties / capabilities
        Removed value: -{
        -  "description": "Host-facing capabilities included in HemmaBo.",
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • changedOutput schema / properties / product / description
        Previous value: -"HemmaBo product, the host's subscription price (the host pays HemmaBo $39/month; a guest never pays it), onboarding URL, and live proof URLs."New value: +"HemmaBo: the category sentence, the host's subscription price atom ($39/month; the host pays it, a guest never does), and the onboarding URL."
      • changedOutput schema / required
        Previous value: -[
        -  "ok",
        -  "product",
        -  "capabilities",
        -  "setup_items",
        -  "next_step"
        -]New value: +[
        +  "ok",
        +  "product",
        +  "agent_role",
        +  "setup_items",
        +  "next_step"
        +]
    • Changedhemmabo_host_readiness_check10 fields changed
      • addedOutput schema / properties / agent_role
        Added value: +{
        +  "description": "What a compatible agent does: discover the host domain, verify the signed stay offer, send the guest to that domain to book. The agent does not book.",
        +  "type": "string"
        +}
      • removedOutput schema / properties / capabilities
        Removed value: -{
        -  "description": "Host-facing capabilities included in HemmaBo.",
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • changedOutput schema / properties / product / description
        Previous value: -"HemmaBo product summary, the host's subscription price, onboarding URL, and live proof URLs."New value: +"HemmaBo: the category sentence, the host's subscription price atom, and the onboarding URL."
      • changedOutput schema / properties / product / properties / category / description
        Previous value: -"Product category, e.g. 'host-owned booking engine for vacation rentals'."New value: +"The category sentence: 'Vacation rental software. A signed stay offer on the host's own domain.'"
      • removedOutput schema / properties / product / properties / live_proof_url
        Removed value: -{
        -  "description": "Live AI-agent booking proof page on hemmabo.com.",
        -  "format": "uri",
        -  "type": "string"
        -}
      • removedOutput schema / properties / product / properties / live_reference_domain
        Removed value: -{
        -  "description": "Live reference host-node domain to show the model in action.",
        -  "format": "uri",
        -  "type": "string"
        -}
      • removedOutput schema / properties / product / properties / price / properties / first_month_free
        Removed value: -{
        -  "description": "True when the first month is free.",
        -  "type": "boolean"
        -}
      • changedOutput schema / properties / product / properties / price / properties / summary / description
        Previous value: -"The price as one sentence: 'The host pays HemmaBo $39/month.'"New value: +"The price atom: '$39/month'. The host pays it; a guest never does."
      • changedOutput schema / properties / readiness / properties / product_category / description
        Previous value: -"Plain-language product category."New value: +"The category sentence."
      • changedOutput schema / required
        Previous value: -[
        -  "ok",
        -  "product",
        -  "readiness",
        -  "capabilities",
        -  "setup_items",
        -  "next_step",
        -  "agent_instruction"
        -]New value: +[
        +  "ok",
        +  "product",
        +  "readiness",
        +  "agent_role",
        +  "setup_items",
        +  "next_step",
        +  "agent_instruction"
        +]
  6. 2 tool updates
    • Changedhemmabo_host_onboarding_link1 field changed
      • changedOutput schema / properties / product / description
        Previous value: -"HemmaBo product, pricing, onboarding URL, and live proof URLs."New value: +"HemmaBo product, the host's subscription price (the host pays HemmaBo $39/month; a guest never pays it), onboarding URL, and live proof URLs."
    • Changedhemmabo_host_readiness_check4 fields changed
      • changedOutput schema / properties / product / description
        Previous value: -"HemmaBo product summary, pricing, onboarding URL, and live proof URLs."New value: +"HemmaBo product summary, the host's subscription price, onboarding URL, and live proof URLs."
      • changedOutput schema / properties / product / properties / price / description
        Previous value: -"Subscription pricing for the host."New value: +"The host's HemmaBo subscription: the host pays HemmaBo. A guest never pays it."
      • addedOutput schema / properties / product / properties / price / properties / payer
        Added value: +{
        +  "description": "Who pays this price: always the host, never a guest.",
        +  "enum": [
        +    "host"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / product / properties / price / properties / summary
        Added value: +{
        +  "description": "The price as one sentence: 'The host pays HemmaBo $39/month.'",
        +  "type": "string"
        +}
  7. 1 tool update
    • Changedhemmabo_search_properties2 fields changed
      • changedInput schema / properties / country / description
        Previous value: -"Country 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."New value: +"Country name to filter by (e.g. 'Sweden', 'Italy', 'Morocco'). Partial case-insensitive match against the country field. Optional — omit both region and country and the search spans every published property."
      • changedInput schema / properties / region / description
        Previous value: -"Region, 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."New value: +"Region, area, or destination to search within (e.g. 'Skåne', 'Kävlinge', 'Toscana', 'Bavaria'). Partial case-insensitive match against region, city, and country. Optional — omit both region and country and the search spans every published property."
  8. 8 tool updates
    • Removedhemmabo_booking_cancel
    • Removedhemmabo_booking_checkout
    • Removedhemmabo_booking_create
    • Removedhemmabo_booking_negotiate
    • Removedhemmabo_booking_quote
    • Removedhemmabo_booking_reschedule
    • Removedhemmabo_booking_status
    • Changedhemmabo_search_properties2 fields changed
      • addedOutput schema / properties / properties / items / properties / booking_url
        Added value: +{
        +  "description": "The host's own booking URL: https:// plus the host-owned domain. Null when the property has no domain.",
        +  "format": "uri",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • changedOutput schema / properties / properties / items / properties / propertyId / description
        Previous value: -"Stable UUID. Pass to subsequent tools (availability, quote, checkout)."New value: +"Stable UUID. Pass to subsequent tools (availability)."
  9. 3 tool updates
    • Changedhemmabo_booking_cancel3 fields changed
      • addedOutput schema / properties / checkIn
        Added value: +{
        +  "description": "Arrival date of the cancelled stay (YYYY-MM-DD).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / checkOut
        Added value: +{
        +  "description": "Departure date of the cancelled stay (YYYY-MM-DD).",
        +  "type": "string"
        +}
      • removedOutput schema / properties / refund
        Removed value: -{
        -  "additionalProperties": true,
        -  "description": "Refund payload returned by cancel-booking edge function, when present.",
        -  "type": "object"
        -}
    • Changedhemmabo_booking_checkout6 fields changed
      • removedInput schema / properties / paymentMode
        Removed value: -{
        -  "description": "Stripe 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.",
        -  "enum": [
        -    "checkout_session",
        -    "payment_intent"
        -  ],
        -  "type": "string"
        -}
      • removedOutput schema / properties / mpp
        Removed value: -{
        -  "additionalProperties": true,
        -  "description": "Present when paymentMode='payment_intent'.",
        -  "type": "object"
        -}
      • changedOutput schema / properties / paymentUrl / description
        Previous value: -"Stripe Checkout redirect URL."New value: +"Host-configured Stripe Checkout URL for the guest to open in their own browser."
      • removedOutput schema / properties / payment_modes
        Removed value: -{
        -  "description": "Supported payment modes.",
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • changedOutput schema / properties / status / description
        Previous value: -"Booking status (typically 'pending' until payment succeeds)."New value: +"Booking status (typically 'pending' until the Stripe webhook confirms the booking)."
      • changedOutput schema / properties / totalPrice / description
        Previous value: -"Final total charged (or to be charged), in minor currency units."New value: +"Total for the stay in minor currency units, as shown on the host's Stripe Checkout page."
    • Changedhemmabo_booking_reschedule1 field changed
      • removedOutput schema / properties / pricing / properties / stripeAction
        Removed value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables LLMs and AI agents to perform defensive security posture assessments, privilege escalation surface audits, and post-quantum cryptography readiness checks through read-only diagnostic tools.
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI clients to perform sandboxed filesystem, directory, Ubuntu system, network, git, and code/text operations through 38 typed tools confined to a workspace. Ships with a browser-based web console that provides an interactive Linux terminal, a live tool playground, and real-time CPU, memory, and disk monitoring.
    38
    2
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables read-only access to operations and telemetry data across 12 domains through 45 agent tools, including asset inventory, metrics, outages, incidents, and platform settings, with support for AWS SigV4-signed live access and a fixture-based mock mode that runs without a backend.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    36 enterprise MCP tools for AWS security, infrastructure generation, AI workflows, and agent governance. IAM validation, MFA compliance, CloudFormation/SAM generation, DynamoDB design, OAuth validation, vector embeddings, error analysis, data lake readiness, 12 ACI governance tools for AI agent safety, and 4 local interview tools.
    28 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.