# Landhaus Apartments Prägant

> Live availability, rates and offers for Landhaus Apartments Prägant in Bad Kleinkirchheim, Austria.

- name: net.praegant/landhaus
- version: 2.2.8
- connection class: R0 (autonomous)
- trust: 83/100 flags: no-repository
- quality: 70/100 (needs work)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/net.praegant%2Flandhaus
- tools: https://api.protogrid.dev/v1/servers/net.praegant%2Flandhaus/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "landhaus": {
      "type": "http",
      "url": "https://mcp.praegant.net/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 100
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-100% +updated-21d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 70/100 (needs work)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list declares ttlMs 0, so clients re-fetch it on every use

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 79 (weight 30)

- pass `tools.descriptions`: every tool has a description
- warn `tools.description_length`: 1 tools have descriptions over 1,024 characters, which crowds the context
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 10 of 10 tools declare readOnlyHint or destructiveHint
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: render_rates_card (idempotentHint); get_apartment_details (idempotentHint); render_apartment_gallery (idempotentHint); …
- pass `tools.token_cost`: about 3,585 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 25 (weight 15)

- warn `stability.changes`: 27 tool changes in 30 days
- fail `stability.rug_pull`: 10 tools kept their name but changed most of their description in 30 days; review before trusting them

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 10, about 3,585 tokens to load them all
- tool set hash: 7f4813c358f74d8de5bd26e52933190d
- tools last changed: 2026-09-29T19:31:27.300Z
- badge: [![protogrid quality](https://protogrid.dev/badge/net.praegant/landhaus.svg)](https://protogrid.dev/servers/net.praegant/landhaus)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-09-29 `render_availability_card` changed (outputSchema)
- 2026-09-29 `check_availability` changed (outputSchema)
- 2026-09-27 `get_region_info` changed (description, inputSchema)
  - before: Return curated information about Bad Kleinkirchheim and the house for a topic. Use for "what can we do there?" questions: skiing (winter), hiking, biking and lakes (summer), thermal spas and the in-house sauna (wellness), golf incl. the free green fee and tee-time booking, families, workation, arrival. The Kärnten Card (summer only) and the free green fee are explained exactly. Not for prices or availability (check_availability) and not for apartment facts (get_apartment_details). Behaviour: read-only, static curated content from the property (no web search), instant. Returns text plus structuredContent.topics (topic, lines) and contact details.
  - after: Return curated information about Bad Kleinkirchheim and the house for a topic. Use for "what can we do there?" and house questions: house rules and services (self-catering, no breakfast, bread-roll service, no pets, baby cot/high chair on request, chip access), skiing (winter), hiking, biking and lakes (summer), thermal spas and the in-house sauna (wellness), golf incl. the free green fee and tee-time booking, families, workation, arrival. The Kärnten Card (summer only) and the free green fee are explained exactly. Not for prices or availability (check_availability) and not for apartment facts (get_apartment_details). Behaviour: read-only, static curated content from the property (no web search), instant. Returns text plus structuredContent.topics (topic, lines) and contact details.
- 2026-09-27 `render_availability_card` changed (outputSchema)
- 2026-09-27 `check_availability` changed (description, outputSchema)
  - before: Check live availability and exact prices at Landhaus Apartments Prägant for concrete dates and a party. Use this whenever a guest names dates — it is the main tool. It applies the booking rules (arrival days, minimum stay, closures), lists the free apartments cheapest first with the total split into stay, final cleaning and tourist tax, the payment and cancellation terms, the website offers valid for the stay and a pre-filled booking link per apartment. If the wish is not bookable it returns the nearest bookable alternative dates with prices instead; parties larger than one apartment get a combination of apartments. Ask for dates, number of adults and the ages of all children first — never assume them. Not for: prices of a whole month without dates (get_rates), apartment descriptions (get_apartment_details). To show the result visually, call render_availability_card with the same arguments. Behaviour: read-only, nothing is booked or reserved, no personal data. Live from the property's booking system (typically 1-2 s, identical requests cached 90 s). Invalid input returns isError with the reason. Returns a text summary plus structuredContent (status, apartments with breakdown and booking_url, alternatives, group, terms, offers, inquiry_url).
  - after: Check live availability and exact prices at Landhaus Apartments Prägant for concrete dates and a party. Use this whenever a guest names dates — it is the main tool. It applies the booking rules (arrival days, minimum stay, closures), recommends the apartment that suits the party best (with reasons, e.g. 2 separate bedrooms for families) and lists the free apartments with the total split into stay, final cleaning and tourist tax, the payment and cancellation terms, the website offers valid for the stay and a pre-filled booking link per apartment. If the wish is not bookable it returns the nearest bookable alternative dates with prices instead; parties larger than one apartment get a combination of apartments. Ask for dates, number of adults and the ages of all children first — never assume them. Not for: prices of a whole month without dates (get_rates), apartment descriptions (get_apartment_details). To show the result visually, call render_availability_card with the same arguments. Behaviour: read-only, nothing is booked or reserved, no personal data. Live from the property's booking system (typically 1-2 s, identical requests cached 90 s). Invalid input returns isError with the reason. Returns a text summary plus structuredContent (status, apartments with breakdown and booking_url, alternatives, group, terms, offers, inquiry_url).
- 2026-09-26 `get_region_info` changed (description, inputSchema, outputSchema) **meaning changed**
  - before: Get information about Bad Kleinkirchheim and the surrounding region in Carinthia, Austria. Covers activities, attractions, weather, dining, and transport. Useful when guests ask "What can we do there?" or "What's the area like?" Data includes live partner events and knowledge from our database. Args: topic: Optional filter — 'winter', 'summer', 'wellness', 'golf', 'family', 'hiking', 'biking', 'workation', or any keyword. Leave empty for a general overview.
  - after: Return curated information about Bad Kleinkirchheim and the house for a topic. Use for "what can we do there?" questions: skiing (winter), hiking, biking and lakes (summer), thermal spas and the in-house sauna (wellness), golf incl. the free green fee and tee-time booking, families, workation, arrival. The Kärnten Card (summer only) and the free green fee are explained exactly. Not for prices or availability (check_availability) and not for apartment facts (get_apartment_details). Behaviour: read-only, static curated content from the property (no web search), instant. Returns text plus structuredContent.topics (topic, lines) and contact details.
- 2026-09-26 `get_booking_link` changed (title, description, inputSchema, outputSchema) **meaning changed**
  - before: Get a direct booking link for Landhaus Prägant, Bad Kleinkirchheim, Austria. Direct booking without commission — best price guaranteed. No credit card required. Family-run since 1982. This does NOT create a booking — it provides the link and contact details. Args: apartment: Optional. Apartment name or number (e.g. '12', '#16'). check_in: Optional. Desired check-in date YYYY-MM-DD. check_out: Optional. Desired check-out date YYYY-MM-DD. adults: Number of adults (default: 2). children: Ages of children, comma-separated (e.g. '8,6'). language: "de" (default) or "en" — match the conversation language.
  - after: Build a direct booking link on praegant.net, optionally pre-filled with dates, party and apartment. Use when the guest has decided and just wants the link, or wants to book without a price check. Bookings are always completed by the guest on praegant.net (no commission) — this connector never books, reserves or takes payment by design. check_availability already returns a booking link per free apartment, so call this only when no availability result is at hand. Dates are optional (YYYY-MM-DD); without them the link opens the booking page. Behaviour: read-only, no availability check, instant. Returns text plus structuredContent (booking_url, inquiry_url, phone, email).
- 2026-09-26 `render_offers_card` changed (description, inputSchema, outputSchema) **meaning changed**
  - before: Render the interactive offers card for Landhaus Prägant, Bad Kleinkirchheim, Austria. Same lookup and same result as get_offers() (identical text output) — call this one when the user wants to SEE the offers visually, typically right after get_offers() already confirmed there's something worth showing. Args: identical to get_offers() — see that tool for full parameter docs.
  - after: Show the current website offers as an interactive card with photos and links. Use instead of get_offers when the guest wants to browse the offers visually. Same behaviour (read-only) and result as get_offers, plus a photo per offer.
- 2026-09-26 `get_offers` changed (title, description, inputSchema, outputSchema) **meaning changed**
  - before: Get active seasonal offers for Landhaus Prägant, Bad Kleinkirchheim, Austria. Returns current special deals, packages, and seasonal promotions. Offers as published on praegant.net. This is the data-only version — for a visual offers card, call render_offers_card() with the same arguments after reviewing this result. Args: language: "de" (default) or "en" — match the conversation language.
  - after: List all current seasonal offers and packages published on praegant.net. Use when the guest asks about deals, packages or what is special in a season, independent of dates. When the guest already has dates, check_availability includes only the offers valid for that stay — no need to call both. Visual version: render_offers_card. Behaviour: read-only; offers as published on the website (synced hourly, expired ones removed). Returns text plus structuredContent.offers (title, valid_from, valid_to, price_text, summary, url).
- 2026-09-26 `render_apartment_gallery` changed (description, inputSchema, outputSchema) **meaning changed**
  - before: Render the interactive apartment gallery card for Landhaus Prägant, Bad Kleinkirchheim, Austria. Same lookup and same result as get_apartment_details() (identical text output) — call this one when the user wants to SEE the apartment(s) visually (photos, size, highlights), typically right after get_apartment_details() already confirmed there's something worth showing. Args: identical to get_apartment_details() — see that tool for full parameter docs.
  - after: Show one or all apartments with photos as an interactive gallery card in the chat. Use instead of get_apartment_details when the guest wants to see the apartments (one apartment: up to 3 swipeable photos; all: one photo each, with buttons to check availability or open the page). Same arguments, behaviour (read-only, no prices) and result as get_apartment_details, plus photos.

Full history: https://api.protogrid.dev/v1/servers/net.praegant%2Flandhaus/changes

## Remotes

- https://mcp.praegant.net/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (10)

- `check_availability`: Check live availability and exact prices at Landhaus Apartments Prägant for concrete dates and a party.

Use this whenever a guest names dates — it is the main tool. It applies the booking rules (arrival days,
minimum stay, closures), recommends the apartment that suits the party best (with reasons, e.g. 2 separate
bedrooms for families) and lists the free apartments with the total split into stay, final cleaning and
tourist tax, the payment and cancellation terms, the website offers valid for the stay and a
pre-filled booking link per apartment. If the wish is not bookable it returns the nearest bookable
alternative dates with prices instead; parties larger than one apartment get a combination of apartments.
Ask for dates, number of adults and the ages of all children first — never assume them.
Not for: prices of a whole month without dates (get_rates), apartment descriptions (get_apartment_details).
To show the result visually, call render_availability_card with the same arguments.

Behaviour: read-only, nothing is booked or reserved, no personal data. Live from the property's booking
system (typically 1-2 s, identical requests cached 90 s). Invalid input returns isError with the reason.
Returns a text summary plus structuredContent (status, apartments with breakdown and booking_url,
alternatives, group, terms, offers, inquiry_url).
- `get_apartment_details`: Describe one or all apartments: size, bedrooms, maximum guests, description and page link.

Use for questions about the apartments themselves ("how big is #16?", "which apartment has 2 bedrooms?",
"which apartments fit 5 people?"). It contains no prices or availability — use check_availability for
dates and prices, or get_rates for a month overview. Studio #17 is only listed when asked for by number and
is marked as bookable on request. Visual version with photos: render_apartment_gallery.
Behaviour: read-only; facts as maintained on praegant.net (synced hourly), answers in milliseconds.
Returns text plus structuredContent.apartments (nr, name, m2, bedrooms, max_guests, description, url,
on_request, images). An unknown number returns the list of existing apartment numbers.
- `get_booking_link`: Build a direct booking link on praegant.net, optionally pre-filled with dates, party and apartment.

Use when the guest has decided and just wants the link, or wants to book without a price check. Bookings
are always completed by the guest on praegant.net (no commission) — this connector never books, reserves
or takes payment by design. check_availability already returns a booking link per free apartment, so
call this only when no availability result is at hand. Dates are optional (YYYY-MM-DD); without them the
link opens the booking page.
Behaviour: read-only, no availability check, instant. Returns text plus structuredContent (booking_url,
inquiry_url, phone, email).
- `get_offers`: List all current seasonal offers and packages published on praegant.net.

Use when the guest asks about deals, packages or what is special in a season, independent of dates.
When the guest already has dates, check_availability includes only the offers valid for that stay — no
need to call both. Visual version: render_offers_card.
Behaviour: read-only; offers as published on the website (synced hourly, expired ones removed).
Returns text plus structuredContent.offers (title, valid_from, valid_to, price_text, summary, url).
- `get_rates`: Get the price level of each apartment for a whole month plus that month's booking rules.

Use when the guest has no exact dates yet ("what does a week in July cost?", "when is it cheapest?").
For each apartment it returns the lowest total price of a real reference stay in that month (usually 7
nights, incl. final cleaning and tourist tax) and the arrival days / minimum stay / closures of the month.
Not for exact prices on specific dates — use check_availability for that. Visual version:
render_rates_card with the same arguments.
Behaviour: read-only, live from the booking system (about 1-2 s, cached 5 min). Returns text plus
structuredContent (apartments, periods, weeks, perks, offers).
- `get_region_info`: Return curated information about Bad Kleinkirchheim and the house for a topic.

Use for "what can we do there?" and house questions: house rules and services (self-catering, no
breakfast, bread-roll service, no pets, baby cot/high chair on request, chip access), skiing (winter),
hiking, biking and lakes (summer), thermal spas and the in-house sauna (wellness), golf incl. the free
green fee and tee-time booking, families, workation, arrival. The Kärnten Card (summer only) and the free green fee are explained exactly. Not for
prices or availability (check_availability) and not for apartment facts (get_apartment_details).
Behaviour: read-only, static curated content from the property (no web search), instant.
Returns text plus structuredContent.topics (topic, lines) and contact details.
- `render_apartment_gallery`: Show one or all apartments with photos as an interactive gallery card in the chat.

Use instead of get_apartment_details when the guest wants to see the apartments (one apartment: up to 3
swipeable photos; all: one photo each, with buttons to check availability or open the page). Same
arguments, behaviour (read-only, no prices) and result as get_apartment_details, plus photos.
- `render_availability_card`: Show the availability result for given dates and party as an interactive card in the chat.

Use after check_availability (or instead of it) when the guest wants to SEE the options: photos, total
price with an expandable breakdown, a booking button per apartment, tappable alternative dates. Use
check_availability alone when only reasoning over the data or when the client cannot display cards.
Behaviour and arguments are identical to check_availability (read-only, live, nothing booked); the result
additionally contains small photos and the Google rating. Returns the same text and structuredContent.
- `render_offers_card`: Show the current website offers as an interactive card with photos and links.

Use instead of get_offers when the guest wants to browse the offers visually. Same behaviour (read-only)
and result as get_offers, plus a photo per offer.
- `render_rates_card`: Show a month's prices and booking rules as an interactive card in the chat.

Use instead of get_rates when the guest wants to see the overview; each apartment line can be tapped to
check its dates. Use get_rates when only the data is needed. Same arguments, behaviour (read-only, live)
and result as get_rates.
