Skip to main content
Glama

Landhaus Apartments Prägant

Check Availability

check_availability
Read-only

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).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
adultsNoTOTAL number of guests aged 18+ in the whole party — also for groups larger than one apartment (the tool plans the apartments). Guests aged 0-17 go into children.
check_inYesArrival date YYYY-MM-DD, e.g. '2027-06-12'
childrenNoAges of ALL children 0-17, comma-separated, e.g. '8,15'; empty if none. Ages change price and tourist tax (charged from age 17).
languageNoAnswer language: 'de' (default) or 'en' — use the language of the conversation. Text and card are always in the same language.de
check_outYesDeparture date YYYY-MM-DD (after check_in, max. 60 nights)

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
groupNorooms[] (like apartments, plus adults, child_ages), total, booking_url (all apartments in ONE basket on praegant.net, up to 4 apartments; else null -> enquiry), alternative{total, nrs[], rooms[], booking_url}
perksNokaernten_card, greenfee (bool, for this arrival date)
queryNocheck_in, check_out, nights, adults, child_ages, persons
rulesNook, problems[], min_nights, period{from,to,min_nights,arrival_weekdays 0=Mon}
termsNodeposit_pct, deposit_method, deposit_due_days, balance, card_required, tax_pp_night, tax_min_age, free_cancel_until
offersNoWebsite offers valid during the stay: title, url, price_text
ratingNoGoogle rating, review_count (render tool only)
statusNook: apartments free; group: several apartments needed; rule_violation: arrival/departure day or minimum stay not allowed; closed; fully_booked; not_released: beyond published dates
languageNo
apartmentsNoFree apartments, recommended first, then cheapest: nr, match{recommended, reasons[]}, total (EUR, whole stay+party), breakdown{logis, cleaning, tourist_tax, tax_persons, deposit, balance, free_cancel_until} or null, facts{name, m2, bedrooms, max_guests, url, image, photo}, booking_url
inquiry_urlNoPre-filled non-binding enquiry form
unavailableNoFitting apartments already booked: nr, name
alternativesNoNearest bookable stays: check_in, check_out, nights, from_price, cheapest, apartments[], booking_url
next_arrivalNoEarliest bookable arrival on/after the wish for the same stay length and party (fully booked / closed only)
recommendationNoBest fit for this party: nr, reasons[] (two_bedrooms, cheapest, most_space, best_value, terrace, loggia, balcony), needs_two_bedrooms, comfortable

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedOutput schema / properties / next_arrival
      Added value: +{
      +  "description": "Earliest bookable arrival on/after the wish for the same stay length and party (fully booked / closed only)",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  2. Changed1 schema field changed
    • changedOutput schema / properties / group / description
      Previous value: -"rooms[] (like apartments, plus adults, child_ages), total, alternative"New value: +"rooms[] (like apartments, plus adults, child_ages), total, booking_url (all apartments in ONE basket on praegant.net, up to 4 apartments; else null -> enquiry), alternative{total, nrs[], rooms[], booking_url}"
  3. Changed2 schema fields changed
    • changedOutput schema / properties / apartments / description
      Previous value: -"Free apartments, cheapest first: nr, total (EUR, whole stay+party), breakdown{logis, cleaning, tourist_tax, tax_persons, deposit, balance, free_cancel_until} or null, facts{name, m2, bedrooms, max_guests, url, image, photo}, booking_url"New value: +"Free apartments, recommended first, then cheapest: nr, match{recommended, reasons[]}, total (EUR, whole stay+party), breakdown{logis, cleaning, tourist_tax, tax_persons, deposit, balance, free_cancel_until} or null, facts{name, m2, bedrooms, max_guests, url, image, photo}, booking_url"
    • addedOutput schema / properties / recommendation
      Added value: +{
      +  "description": "Best fit for this party: nr, reasons[] (two_bedrooms, cheapest, most_space, best_value, terrace, loggia, balcony), needs_two_bedrooms, comfortable",
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
  4. Changed6 schema fields changed
    • changedInput schema / properties / adults / description
      Previous value: -"TOTAL adults (18+) of the whole party — also for groups larger than one apartment; the tool plans the apartments"New value: +"TOTAL number of guests aged 18+ in the whole party — also for groups larger than one apartment (the tool plans the apartments). Guests aged 0-17 go into children."
    • changedInput schema / properties / check_in / description
      Previous value: -"Arrival date YYYY-MM-DD"New value: +"Arrival date YYYY-MM-DD, e.g. '2027-06-12'"
    • changedInput schema / properties / check_out / description
      Previous value: -"Departure date YYYY-MM-DD"New value: +"Departure date YYYY-MM-DD (after check_in, max. 60 nights)"
    • changedInput schema / properties / children / description
      Previous value: -"Ages of ALL children 0–17, comma-separated, e.g. '8,15'. Empty if none. Ages matter for price and tourist tax."New value: +"Ages of ALL children 0-17, comma-separated, e.g. '8,15'; empty if none. Ages change price and tourist tax (charged from age 17)."
    • changedInput schema / properties / language / description
      Previous value: -"'de' (default) or 'en' — the language of the conversation"New value: +"Answer language: 'de' (default) or 'en' — use the language of the conversation. Text and card are always in the same language."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "description": "Result of check_availability / render_availability_card.",
      +  "properties": {
      +    "alternatives": {
      +      "description": "Nearest bookable stays: check_in, check_out, nights, from_price, cheapest, apartments[], booking_url",
      +      "items": {
      +        "additionalProperties": true,
      +        "type": "object"
      +      },
      +      "type": [
      +        "array",
      +        "null"
      +      ]
      +    },
      +    "apartments": {
      +      "description": "Free apartments, cheapest first: nr, total (EUR, whole stay+party), breakdown{logis, cleaning, tourist_tax, tax_persons, deposit, balance, free_cancel_until} or null, facts{name, m2, bedrooms, max_guests, url, image, photo}, booking_url",
      +      "items": {
      +        "additionalProperties": true,
      +        "type": "object"
      +      },
      +      "type": [
      +        "array",
      +        "null"
      +      ]
      +    },
      +    "group": {
      +      "description": "rooms[] (like apartments, plus adults, child_ages), total, alternative",
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "inquiry_url": {
      +      "description": "Pre-filled non-binding enquiry form",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "language": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "offers": {
      +      "description": "Website offers valid during the stay: title, url, price_text",
      +      "items": {
      +        "additionalProperties": true,
      +        "type": "object"
      +      },
      +      "type": [
      +        "array",
      +        "null"
      +      ]
      +    },
      +    "perks": {
      +      "description": "kaernten_card, greenfee (bool, for this arrival date)",
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "query": {
      +      "description": "check_in, check_out, nights, adults, child_ages, persons",
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "rating": {
      +      "description": "Google rating, review_count (render tool only)",
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "rules": {
      +      "description": "ok, problems[], min_nights, period{from,to,min_nights,arrival_weekdays 0=Mon}",
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "status": {
      +      "description": "ok: apartments free; group: several apartments needed; rule_violation: arrival/departure day or minimum stay not allowed; closed; fully_booked; not_released: beyond published dates",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "terms": {
      +      "description": "deposit_pct, deposit_method, deposit_due_days, balance, card_required, tax_pp_night, tax_min_age, free_cancel_until",
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "unavailable": {
      +      "description": "Fitting apartments already booked: nr, name",
      +      "items": {
      +        "additionalProperties": true,
      +        "type": "object"
      +      },
      +      "type": [
      +        "array",
      +        "null"
      +      ]
      +    }
      +  },
      +  "type": "object"
      +}
  5. Changed7 schema fields changed
    • addedInput schema / properties / adults / description
      Added value: +"TOTAL adults (18+) of the whole party — also for groups larger than one apartment; the tool plans the apartments"
    • addedInput schema / properties / adults / maximum
      Added value: +30
    • addedInput schema / properties / adults / minimum
      Added value: +1
    • addedInput schema / properties / check_in / description
      Added value: +"Arrival date YYYY-MM-DD"
    • addedInput schema / properties / check_out / description
      Added value: +"Departure date YYYY-MM-DD"
    • addedInput schema / properties / children / description
      Added value: +"Ages of ALL children 0–17, comma-separated, e.g. '8,15'. Empty if none. Ages matter for price and tourist tax."
    • addedInput schema / properties / language / description
      Added value: +"'de' (default) or 'en' — the language of the conversation"
  6. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already cover the read-only/no-destruction profile, but the description adds substantial behavior beyond them: applied booking rules, recommendation logic, output composition, fallback to nearest bookable dates, multi-apartment grouping for large parties, latency (~1-2 s), 90 s caching, and isError on invalid input. These are exactly the traits an agent needs to plan calls and handle edge cases.

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-loads the core purpose, then organizes detail under 'Not for:' and 'Behaviour:' headers, which is easy to scan. It is fairly long and slightly redundant (return-shape described despite an output schema), but nearly every sentence carries 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?

Given a true output schema and full annotation coverage, the description need not restate return values yet still summarizes the text plus structuredContent shape. Combined with usage routing, prerequisites, and behavioral traits, an agent has everything needed to call it correctly and route follow-ups.

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 the schema already documents all five parameters including the adults-total and children-ages semantics. The description reinforces party/date framing and constraint context (max 60 nights, closures, arrival days) but adds little parameter dictionary detail beyond what the schema provides, so baseline 3 applies.

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 live availability and exact prices') scoped to a named property and input shape ('concrete dates and a party'). It clearly distinguishes itself from siblings by labeling itself 'the main tool' and naming what it is not (get_rates, get_apartment_details).

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?

Explicit trigger ('Use this whenever a guest names dates'), explicit exclusions with named alternatives ('Not for: ... (get_rates) ... (get_apartment_details)'), a prerequisite ('ask for dates, number of adults and ages of all children first — never assume them'), and a routing rule for the visual sibling (render_availability_card with same arguments). 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.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources