Koskamo

Beach Valencia Booking MCP

An official MCP server for Beach Valencia that allows AI agents to search for holiday apartment availability, retrieve pricing and property details, view cancellation policies, and initiate booking requests. It supports flexible date searches and returns alternative options when exact matches are unavailable, facilitating direct bookings via Stripe Checkout.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Beach Valencia Booking MCP logo, by Beach ValenciaVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-07Operated by Beach Valencia
MCP endpoint (Streamable HTTP)
https://www.beachvalencia.com/api/mcp
Vendor documentation

What its tools do

5 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

Can change data (1)

5 of 5 have a description · 5 of 5 declare behavior hints · 4 of 5 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to beachvalencia.com ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Search for available holiday apartments by date and budget
  • Retrieve detailed property information and pricing
  • Check cancellation policies and terms
  • Initiate a booking request to generate a payment link

Source and maintenance

Vendor evidenceRegistry 1.1.0

Protocol and capabilities

Server
beachvalencia 1.0.0
MCP protocol negotiated in check
2025-11-25
Tools
5 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Read-only availability and pricing for Beach Valencia holiday apartments in La Patacona (Alboraya, Valencia) and Valencia city. Prices are the public rate charged at checkout for a non-member with no discount code. All booking_url links direct users to https://www.beachvalencia.com to complete the reservation. Do not disclose individual apartment numbers or exact addresses — only property types (G1..G6, G4B).

Tools

5 advertised

search_availability — Search availability
Advertised by the server during the last successful anonymous check.
Advertised read-only

WHEN: use it whenever the traveller asks "what do you have from X to Y for N people" or shows date flexibility. WHAT IT RETURNS: `matches[]` with one entry per available category (G1..G6, G4B) ordered by total price, including name, zone (beach/city), bedrooms, m², highlights, location summary, photos, total/nightly EUR price (public rate, no discount code) and a `booking_url` with dates+pax prefilled. Also `alternatives[]` (up to 6, each with `reason` like "same dates, other category" or "2 days earlier, same category") when matches are empty or `flexible_days > 0`, `minimum_stay_only[]` for categories that would be available with a longer stay, `no_results_reason` when nothing applies, and `trust` (rating 9.4/10, 320+ Booking reviews, cheaper than Booking.com, Stripe payment, 14-day free cancellation, languages supported). Direct prices are BELOW Booking.com for the same dates. FLEXIBLE PARAMETERS: `flexible_days` (0–3, default 0) shifts the check-in by ±N days to broaden alternatives; `budget_eur` filters matches and alternatives by TOTAL EUR; `zone` ("beach" | "city" | "any", default "any"); `min_bedrooms` (default 1 — a sofa bed does not count). EXAMPLE: {"check_in":"2027-05-22","check_out":"2027-05-27","adults":4,"flexible_days":2,"budget_eur":900,"zone":"beach","min_bedrooms":2}.

search_availability input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "check_in",
    "check_out",
    "adults"
  ],
  "properties": {
    "zone": {
      "enum": [
        "beach",
        "city",
        "any"
      ],
      "type": "string",
      "description": "Filter by zone: beach = La Patacona (G1..G5, G4B); city = Valencia city (G6); any = both (default)."
    },
    "adults": {
      "type": "integer",
      "maximum": 32,
      "minimum": 1,
      "description": "Number of adults."
    },
    "check_in": {
      "type": "string",
      "description": "Arrival date (YYYY-MM-DD, Europe/Madrid)."
    },
    "children": {
      "type": "array",
      "items": {
        "type": "integer",
        "maximum": 17,
        "minimum": 0
      },
      "maxItems": 10,
      "description": "Optional list of children ages. Only the count is used to size the property."
    },
    "language": {
      "enum": [
        "es",
        "en"
      ],
      "type": "string",
      "description": "Response language. Defaults to en if omitted or unsupported."
    },
    "check_out": {
      "type": "string",
      "description": "Departure date (YYYY-MM-DD, Europe/Madrid); must be strictly after check_in."
    },
    "budget_eur": {
      "type": "number",
      "maximum": 100000,
      "description": "Max TOTAL price in EUR for the whole stay. Filters both matches and alternatives.",
      "exclusiveMinimum": 0
    },
    "min_bedrooms": {
      "type": "integer",
      "maximum": 5,
      "minimum": 1,
      "description": "Minimum number of bedrooms (1 by default — a sofa bed does not count)."
    },
    "flexible_days": {
      "type": "integer",
      "maximum": 3,
      "minimum": 0,
      "description": "Shift the check-in by ±N days (0..3) to find alternatives if the exact dates are not available. Default 0."
    }
  }
}
search_availability output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "currency",
    "check_in",
    "check_out",
    "nights",
    "guests",
    "matches",
    "minimum_stay_only",
    "alternatives",
    "trust",
    "priority_note",
    "priority_url"
  ],
  "properties": {
    "trust": {
      "type": "object",
      "required": [
        "rating_value",
        "rating_best",
        "rating_count",
        "rating_source",
        "parity_note",
        "cancellation_note",
        "payment_note",
        "languages_spoken"
      ],
      "properties": {
        "parity_note": {
          "type": "string"
        },
        "rating_best": {
          "type": "number"
        },
        "payment_note": {
          "type": "string"
        },
        "rating_count": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991
        },
        "rating_value": {
          "type": "number"
        },
        "rating_source": {
          "type": "string",
          "const": "Booking.com"
        },
        "languages_spoken": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "cancellation_note": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "guests": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "nights": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "matches": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "name",
          "zone",
          "max_guests",
          "bedrooms",
          "bedrooms_count",
          "location",
          "location_summary",
          "highlights",
          "total_price_eur",
          "nightly_avg_eur",
          "nights",
          "photos",
          "booking_url"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "zone": {
            "enum": [
              "beach",
              "city"
            ],
            "type": "string"
          },
          "nights": {
            "type": "integer",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991
          },
          "photos": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "bedrooms": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "highlights": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "max_guests": {
            "type": "integer",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991
          },
          "booking_url": {
            "type": "string"
          },
          "discount_note": {
            "type": "string"
          },
          "bedrooms_count": {
            "type": "integer",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991
          },
          "min_stay_nights": {
            "type": "integer",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991
          },
          "nightly_avg_eur": {
            "type": "number"
          },
          "total_price_eur": {
            "type": "number"
          },
          "location_summary": {
            "type": "string"
          },
          "public_price_eur": {
            "type": "number"
          }
        },
        "additionalProperties": false
      }
    },
    "check_in": {
      "type": "string"
    },
    "currency": {
      "type": "string",
      "const": "EUR"
    },
    "check_out": {
      "type": "string"
    },
    "alternatives": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "name",
          "zone",
          "check_in",
          "check_out",
          "nights",
          "total_price_eur",
          "reason",
          "reason_code",
          "booking_url"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "zone": {
            "enum": [
              "beach",
              "city"
            ],
            "type": "string"
          },
          "nights": {
            "type": "integer",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991
          },
          "reason": {
            "type": "string"
          },
          "check_in": {
            "type": "string"
          },
          "check_out": {
            "type": "string"
          },
          "booking_url": {
            "type": "string"
          },
          "reason_code": {
            "enum": [
              "same_dates_other_category",
              "other_dates_same_category",
              "other_dates_other_category"
            ],
            "type": "string"
          },
          "total_price_eur": {
            "type": "number"
          }
        },
        "additionalProperties": false
      },
      "description": "Up to 6 alternatives (other dates ±flexible_days or other categories) when matches are empty or the agent asked for flexibility."
    },
    "priority_url": {
      "type": "string"
    },
    "priority_note": {
      "type": "string"
    },
    "minimum_stay_only": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "name",
          "min_stay_nights"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "min_stay_nights": {
            "type": "integer",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991
          }
        },
        "additionalProperties": false
      },
      "description": "Properties that would be available if the stay met the minimum-nights rule."
    },
    "no_results_reason": {
      "type": "string",
      "description": "Human-readable reason when both matches and alternatives are empty (e.g. all over minimum_stay or over budget)."
    }
  },
  "additionalProperties": false
}
search_availability annotations
{
  "title": "Search availability",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_property_details — Get property details
Advertised by the server during the last successful anonymous check.
Advertised read-only

WHEN: use it after `search_availability` when the traveller wants to compare or see more detail about one specific category, or asks "tell me more about G4". WHAT IT RETURNS: description, max_guests, bedrooms (text + count), size_sqm, zone, generic location ("La Patacona, Alboraya — 30 m from the sea" / "Valencia city, close to the centre"), `location_summary` (how long to the old town, tram, airport…), `highlights` (terrace, sea views, pool, parking, m²), amenities (parking, pool_seasonal), up to 3 photos, `trust` (same block as search_availability), a `booking_url_base` to open the listing with no dates, and the Priority note. DO NOT ask here for the exact street address or access codes: they are only sent to the guest by email after a booking is confirmed. EXAMPLE: {"id":"G4","language":"en"}.

get_property_details input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Property/type ID (G1..G6 or G4B)."
    },
    "language": {
      "enum": [
        "es",
        "en"
      ],
      "type": "string",
      "description": "Response language. Defaults to en."
    }
  }
}
get_property_details output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "id",
    "name",
    "zone",
    "max_guests",
    "bedrooms",
    "bedrooms_count",
    "size_sqm",
    "location",
    "location_summary",
    "highlights",
    "description",
    "amenities",
    "photos",
    "booking_url_base",
    "trust",
    "priority_note",
    "priority_url"
  ],
  "properties": {
    "id": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "zone": {
      "enum": [
        "beach",
        "city"
      ],
      "type": "string"
    },
    "trust": {
      "type": "object",
      "required": [
        "rating_value",
        "rating_best",
        "rating_count",
        "rating_source",
        "parity_note",
        "cancellation_note",
        "payment_note",
        "languages_spoken"
      ],
      "properties": {
        "parity_note": {
          "type": "string"
        },
        "rating_best": {
          "type": "number"
        },
        "payment_note": {
          "type": "string"
        },
        "rating_count": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991
        },
        "rating_value": {
          "type": "number"
        },
        "rating_source": {
          "type": "string",
          "const": "Booking.com"
        },
        "languages_spoken": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "cancellation_note": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "photos": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "bedrooms": {
      "type": "string"
    },
    "location": {
      "type": "string"
    },
    "size_sqm": {
      "type": [
        "number",
        "null"
      ]
    },
    "amenities": {
      "type": "object",
      "required": [
        "parking",
        "pool_seasonal"
      ],
      "properties": {
        "parking": {
          "type": "boolean"
        },
        "pool_seasonal": {
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "highlights": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "max_guests": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "description": {
      "type": "string"
    },
    "priority_url": {
      "type": "string"
    },
    "priority_note": {
      "type": "string"
    },
    "bedrooms_count": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "booking_url_base": {
      "type": "string"
    },
    "location_summary": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
get_property_details annotations
{
  "title": "Get property details",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_quote — Get quote
Advertised by the server during the last successful anonymous check.
Advertised read-only

WHEN: use it when the traveller fixes ONE category and wants the exact total for a given date range ("how much is G4 from 8 to 15 June for 6?"). WHAT IT RETURNS: `available` boolean, `total_price_eur`, `nightly_avg_eur`, `nights`, `guests`, `deposit`, `cancellation` summary, `cancellation_details_url`, `booking_url`. When not available, `available: false` and the `booking_url` falls back to the search page (plus `hint` to call `search_availability`). The price is the public rate charged at checkout to a non-member with no discount code — if the traveller has a code, they enter it themselves on beachvalencia.com. EXAMPLE: {"id":"G4","check_in":"2027-06-08","check_out":"2027-06-15","adults":6}.

get_quote input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "id",
    "check_in",
    "check_out",
    "adults"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Property/type ID (G1..G6 or G4B)."
    },
    "adults": {
      "type": "integer",
      "maximum": 32,
      "minimum": 1
    },
    "check_in": {
      "type": "string",
      "description": "Arrival date YYYY-MM-DD."
    },
    "children": {
      "type": "array",
      "items": {
        "type": "integer",
        "maximum": 17,
        "minimum": 0
      },
      "maxItems": 10
    },
    "language": {
      "enum": [
        "es",
        "en"
      ],
      "type": "string"
    },
    "check_out": {
      "type": "string",
      "description": "Departure date YYYY-MM-DD."
    }
  }
}
get_quote output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "id",
    "name",
    "currency",
    "check_in",
    "check_out",
    "nights",
    "guests",
    "available",
    "deposit",
    "cancellation",
    "cancellation_details_url",
    "booking_url"
  ],
  "properties": {
    "id": {
      "type": "string"
    },
    "hint": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "guests": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "nights": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "deposit": {
      "type": "string"
    },
    "check_in": {
      "type": "string"
    },
    "currency": {
      "type": "string",
      "const": "EUR"
    },
    "available": {
      "type": "boolean"
    },
    "check_out": {
      "type": "string"
    },
    "booking_url": {
      "type": "string"
    },
    "cancellation": {
      "type": "string"
    },
    "discount_note": {
      "type": "string"
    },
    "min_stay_nights": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "nightly_avg_eur": {
      "type": "number"
    },
    "total_price_eur": {
      "type": "number"
    },
    "public_price_eur": {
      "type": "number"
    },
    "cancellation_details_url": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
get_quote annotations
{
  "title": "Get quote",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_policies — Get policies
Advertised by the server during the last successful anonymous check.
Advertised read-only

WHEN: use it whenever the traveller asks about cancellation, deposit, check-in/out times, or Spanish traveller registration ("what time can I arrive?", "is there a deposit?", "what if I cancel 10 days before?"). WHAT IT RETURNS: `check_in` (from 16:00 Europe/Madrid), `check_out` (by 11:00), `cancellation.summary` (free up to 14 calendar days before arrival) + `cancellation.details_url`, `deposit` (50 € refundable in pool/garage units), `online_check_in` (SES.Hospedajes link by email), and `contact` (reservas@beachvalencia.com). EXAMPLE: {"language":"en"}.

get_policies input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "language": {
      "enum": [
        "es",
        "en"
      ],
      "type": "string",
      "description": "Response language. Defaults to en."
    }
  }
}
get_policies output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "check_in",
    "check_out",
    "cancellation",
    "deposit",
    "online_check_in",
    "contact"
  ],
  "properties": {
    "contact": {
      "type": "string"
    },
    "deposit": {
      "type": "string"
    },
    "check_in": {
      "type": "string"
    },
    "check_out": {
      "type": "string"
    },
    "cancellation": {
      "type": "object",
      "required": [
        "summary",
        "details_url"
      ],
      "properties": {
        "summary": {
          "type": "string"
        },
        "details_url": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "online_check_in": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
get_policies annotations
{
  "title": "Get policies",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
create_booking_request — Create booking request
Advertised by the server during the last successful anonymous check.

WHEN: use it only after the traveller has (1) picked ONE category and dates, (2) given name, email and phone, and (3) EXPLICITLY accepted the cancellation policy — never set `accepted_terms: true` on your own. WHAT IT RETURNS: `booking_id`, `checkout_url` (a page on beachvalencia.com that shows the breakdown and asks the guest to tick the cancellation policy BEFORE jumping to Stripe), `expires_at` (ISO 8601, ~30 min in the future), `hold_minutes: 30`, total/nightly EUR, nights, guests, property, deposit, cancellation summary, `terms_url`, `idempotent` (true if a prior request with the same category+dates+pax+email was replayed), and a `message` ready to show to the guest. PAYMENT: always on Stripe, hosted at beachvalencia.com. The agent NEVER charges the guest itself. If the hold expires without payment, the unit is released automatically and a new request is needed. The price is the public rate (no member discount, no coupon codes — if the guest has a code, they apply it on the web). IDEMPOTENCY: a replay with the same category, dates, pax and email returns the same booking. EXAMPLE: {"id":"G4","check_in":"2027-05-22","check_out":"2027-05-27","adults":4,"guest_name":"Ada Lovelace","guest_email":"ada@example.com","guest_phone":"+34612345678","language":"en","accepted_terms":true}.

create_booking_request input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "id",
    "check_in",
    "check_out",
    "adults",
    "guest_name",
    "guest_email",
    "guest_phone",
    "language",
    "accepted_terms"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Property/type ID (G1..G6 or G4B)."
    },
    "adults": {
      "type": "integer",
      "maximum": 32,
      "minimum": 1,
      "description": "Number of adults."
    },
    "check_in": {
      "type": "string",
      "description": "Arrival date YYYY-MM-DD (Europe/Madrid)."
    },
    "children": {
      "type": "array",
      "items": {
        "type": "integer",
        "maximum": 17,
        "minimum": 0
      },
      "maxItems": 10,
      "description": "Optional list of children ages. Only the count is used to size the property."
    },
    "language": {
      "enum": [
        "es",
        "en"
      ],
      "type": "string",
      "description": "Language for the confirmation email and error messages."
    },
    "check_out": {
      "type": "string",
      "description": "Departure date YYYY-MM-DD (Europe/Madrid); strictly after check_in."
    },
    "guest_name": {
      "type": "string",
      "maxLength": 80,
      "minLength": 2,
      "description": "Guest's full name."
    },
    "guest_email": {
      "type": "string",
      "format": "email",
      "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      "description": "Guest's email — receives the payment link and confirmation."
    },
    "guest_phone": {
      "type": "string",
      "maxLength": 40,
      "minLength": 6,
      "description": "Guest's phone number, including country code."
    },
    "accepted_terms": {
      "type": "boolean",
      "description": "Must be true. The agent confirms the traveller accepted the cancellation policy and the terms and conditions."
    }
  }
}
create_booking_request output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "booking_id",
    "checkout_url",
    "expires_at",
    "hold_minutes",
    "currency",
    "total_price_eur",
    "nights",
    "guests",
    "property",
    "deposit",
    "cancellation",
    "cancellation_details_url",
    "terms_url",
    "idempotent",
    "message"
  ],
  "properties": {
    "guests": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "nights": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "deposit": {
      "type": "string"
    },
    "message": {
      "type": "string"
    },
    "currency": {
      "type": "string",
      "const": "EUR"
    },
    "property": {
      "type": "object",
      "required": [
        "id",
        "name",
        "location"
      ],
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "location": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "breakdown": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "label",
          "amount"
        ],
        "properties": {
          "label": {
            "type": "string"
          },
          "amount": {
            "type": "number"
          }
        },
        "additionalProperties": false
      }
    },
    "terms_url": {
      "type": "string"
    },
    "booking_id": {
      "type": "string"
    },
    "expires_at": {
      "type": "string"
    },
    "idempotent": {
      "type": "boolean"
    },
    "cancellation": {
      "type": "string"
    },
    "checkout_url": {
      "type": "string"
    },
    "hold_minutes": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "nightly_avg_eur": {
      "type": "number"
    },
    "total_price_eur": {
      "type": "number"
    },
    "cancellation_details_url": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
create_booking_request annotations
{
  "title": "Create booking request",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (1 of 1 answered).

  1. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
843 ms
95th percentile latency
843 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 843 ms · metadata changed · 5 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http beach-valencia-booking-mcp https://www.beachvalencia.com/api/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add beach-valencia-booking-mcp --url https://www.beachvalencia.com/api/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable beach-valencia-booking-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "beach-valencia-booking-mcp": {
      "url": "https://www.beachvalencia.com/api/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "beach-valencia-booking-mcp": {
      "type": "streamableHttp",
      "url": "https://www.beachvalencia.com/api/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start beach-valencia-booking-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "beach-valencia-booking-mcp": {
      "type": "http",
      "url": "https://www.beachvalencia.com/api/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http beach-valencia-booking-mcp https://www.beachvalencia.com/api/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://www.beachvalencia.com/api/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "beach-valencia-booking-mcp": {
      "serverUrl": "https://www.beachvalencia.com/api/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Beach Valencia Booking MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run Beach Valencia Booking MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing