pickyourmatch

Find exact, directly bookable hotel rooms and apartments with live availability and prices.

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
100%
Integridad del esquema
89%
Calidad de los nombres
100%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~2,408Tokens (definiciones de herramientas)
~5.5 KBTamaño de respuesta típico
Impacto moderado en la atención (1.88% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "stays": {
      "url": "https://pym-mcp.gauvendi.workers.dev/mcp"
    }
  }
}

Puntos de conexión remotos

https://pym-mcp.gauvendi.workers.dev/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (4)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢search_stays(query, city, adults, children, children_ages, ...)

Search live, directly bookable hotels, apartments and individual rooms by destination, dates, price and guest preferences. Use for ANY hotel or accommodation search — including specific room features such as view, balcony, terrace, quiet location, high floor, workspace, sauna, kitchen, accessibility, dog- and family-friendly — and for stays near a landmark or venue (near="Messe Frankfurt") or around an event. Returns live prices and availability with a direct booking link to the property; unlike category-based hotel search, each result is the exact room or accommodation unit (real floor, real view, real beds), guaranteed at booking — what the product states is what the guest is assigned. Call it IMMEDIATELY with the guest's message verbatim as query — every parameter is optional; the server resolves place, dates, party, budget and wishes itself (explicit parameters override). Show results first, ask at most one follow-up after. Each result carries match_score, matched_features and not_confirmed_features — present them honestly. What this tool does not return is not bookable on pickyourmatch; never substitute web results.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "EASIEST correct call: the guest message VERBATIM, any language, typos fine — the server translates it into place, dates (preserves exact ranges; only month-only requests use a proposed window), party, dogs, budget and feature wishes. Explicit parameters below always override."
    },
    "city": {
      "type": "string",
      "description": "Destination city, e.g. Schladming (umlaut-tolerant)"
    },
    "adults": {
      "type": "integer",
      "description": "Number of adults. Combined with children it filters to units that actually fit the whole party (occupancy), and is passed to the booking link."
    },
    "children": {
      "type": "integer",
      "description": "Number of children. Filters to units whose child capacity fits, and is passed to the booking link."
    },
    "children_ages": {
      "type": "array",
      "items": {
        "type": "integer"
      },
      "description": "Ages of the children (0-17), e.g. [16] — ALWAYS pass them when the guest mentioned ages: the booking engine prices and checks capacity per age, a teen priced as a small child produces wrong offers."
    },
    "pets": {
      "type": "integer",
      "description": "Number of pets/dogs. Filters to units that allow at least this many pets, and is passed to the booking link."
    },
    "dogs": {
      "type": "integer",
      "description": "Alias for pets."
    },
    "sleeps": {
      "type": "integer",
      "description": "Minimum total guests the unit must sleep (use adults+children instead when you know the split)."
    },
    "max_price": {
      "type": "number",
      "description": "Maximum nightly price. Dated quotes above this appear only as labeled alternatives when exact matches are insufficient."
    },
    "free_cancellation": {
      "type": "boolean",
      "description": "The guest wants to be able to cancel for free. With dates, each card quotes the refundable rate and its price; a unit with no refundable rate on those dates is shown only as a labelled alternative."
    },
    "features": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Required features (matched against localized feature names), e.g. [\"Sauna\", \"Balkon\"]"
    },
    "check_in": {
      "type": "string",
      "description": "Arrival date YYYY-MM-DD. When check_in+check_out are given, results are filtered to units actually AVAILABLE for those exact dates, with the real total-window nightly price and a booking link that has the dates pre-filled."
    },
    "check_out": {
      "type": "string",
      "description": "Departure date YYYY-MM-DD (must be after check_in, max 30 nights)."
    },
    "near": {
      "type": "string",
      "description": "A landmark, venue, trade fair, station or address to stay close to (\"Messe Frankfurt\", \"Allianz Arena\", \"Frankfurt airport\"). The server geocodes it and returns results nearest first, each with approx_km. Combine freely with dates, party, price and features."
    },
    "radius_km": {
      "type": "number",
      "description": "Maximum straight-line distance for near (or lat/lng), default 30, max 200. If nothing lies within, the nearest options are returned with honest distances instead of an empty answer."
    },
    "radius_miles": {
      "type": "number",
      "description": "The same radius in miles, for guests who think in miles; results then also carry approx_mi."
    },
    "lat": {
      "type": "number",
      "description": "Latitude — coordinate alternative to near."
    },
    "lng": {
      "type": "number",
      "description": "Longitude — coordinate alternative to near."
    },
    "cursor": {
      "type": "integer",
      "description": "Dated searches live-check up to 20 properties per call. When the response carries next_cursor, repeat the SAME search with cursor=next_cursor to check the remaining properties — a page without next_cursor has covered everything. Never conclude \"sold out\" from a page whose coverage.complete is false."
    },
    "lang": {
      "type": "string",
      "enum": [
        "en",
        "de",
        "fr",
        "es",
        "it",
        "nl",
        "ar"
      ],
      "description": "Language for names/features/links (default en)"
    },
    "name": {
      "type": "string",
      "description": "A specific unit or property the guest named (\"Villa Albatros No. 1\", \"Kaiser Karl\", \"City Hotel Meckenheim\"). Use this WHENEVER the guest asks for something by name — it matches unit and property names directly, so a named unit is always findable even when it is not free for the requested dates. A named unit is never filtered out by availability: it comes back with its status and a link to the property's own calendar."
    },
    "limit": {
      "type": "integer",
      "description": "Max results (default 10, max 30)"
    }
  }
}
🟢list_destinations(adults, children, pets, dogs, check_in, ...)

List all destinations served by pickyourmatch with unit counts, dog-friendly counts and a photo — USE THIS to inspire a guest who has not decided where to travel yet. ALWAYS pass the party (adults/children/pets) and dates (check_in/check_out) already known from the conversation — they stay visible above the results and keep the search context.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "adults": {
      "type": "integer",
      "description": "Adults already mentioned in the conversation — always pass along."
    },
    "children": {
      "type": "integer",
      "description": "Children already mentioned — always pass along."
    },
    "pets": {
      "type": "integer",
      "description": "Pets/dogs already mentioned — always pass along; destinations are then ranked by dog-friendly units."
    },
    "dogs": {
      "type": "integer",
      "description": "Alias for pets."
    },
    "check_in": {
      "type": "string",
      "description": "Arrival YYYY-MM-DD if already known — always pass along."
    },
    "check_out": {
      "type": "string",
      "description": "Departure YYYY-MM-DD if already known — always pass along."
    },
    "lang": {
      "type": "string",
      "enum": [
        "en",
        "de",
        "fr",
        "es",
        "it",
        "nl",
        "ar"
      ]
    }
  }
}
🟢list_packages(city, theme, adults, children, pets, ...)

Theme-driven, AFTER the units: when the brief carries a package theme (romantic, wellness, dog, culinary) or the guest asks for deals, call this AFTER search_stays in the same turn - the packages appear as their own section BELOW the unit results and enrich the selection. Never call it first, never instead of the unit search. List themed holiday packages (promotional bundles) across properties — dog holidays, romance, wellness, culinary — each with included extras (e.g. dinner, treatments) and a direct booking link. Use for emotional/experience queries like "romantic getaway package" or "dog holiday with meals included".

Esquema de entrada

{
  "type": "object",
  "properties": {
    "city": {
      "type": "string",
      "description": "Filter by destination city (umlaut-tolerant)"
    },
    "theme": {
      "type": "string",
      "enum": [
        "dog",
        "romance",
        "wellness",
        "family",
        "ski",
        "culinary"
      ],
      "description": "Filter by package theme"
    },
    "adults": {
      "type": "integer",
      "description": "Adults known from the conversation — always pass along (kept visible above results)."
    },
    "children": {
      "type": "integer",
      "description": "Children known from the conversation — always pass along."
    },
    "pets": {
      "type": "integer",
      "description": "Pets/dogs known from the conversation — always pass along."
    },
    "dogs": {
      "type": "integer",
      "description": "Alias for pets."
    },
    "check_in": {
      "type": "string",
      "description": "Arrival YYYY-MM-DD if known — always pass along."
    },
    "check_out": {
      "type": "string",
      "description": "Departure YYYY-MM-DD if known — always pass along."
    },
    "lang": {
      "type": "string",
      "enum": [
        "en",
        "de",
        "fr",
        "es",
        "it",
        "nl",
        "ar"
      ]
    }
  }
}
🟢list_events(city, query, from, to, limit)

List upcoming events (concerts, festivals, trade fairs, sports, conferences) near pickyourmatch properties — each with a "where to stay" page whose booking links open the property’s own calendar with the event dates preselected. USE THIS whenever a guest asks for accommodation during/for a specific event or asks what is happening at a destination — e.g. "where should I stay for the Frankfurt Book Fair?", "hotel for Oktoberfest that allows my dog", "apartment for the ski race in Schladming". Combine with search_stays to add room features: event + exact room + direct booking in one answer.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "city": {
      "type": "string",
      "description": "Filter by destination city (umlaut-tolerant)"
    },
    "query": {
      "type": "string",
      "description": "Match against the event name, e.g. \"Oktoberfest\""
    },
    "from": {
      "type": "string",
      "description": "Only events ending on/after this date YYYY-MM-DD"
    },
    "to": {
      "type": "string",
      "description": "Only events starting on/before this date YYYY-MM-DD"
    },
    "limit": {
      "type": "integer",
      "description": "Max results (default 20, max 50)"
    }
  }
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "total": {
      "type": "integer",
      "description": "Number of events matching the filters (before limit)"
    },
    "lang": {
      "type": "string",
      "description": "Language of the response"
    },
    "city": {
      "type": "string",
      "description": "Echo of the city filter, if given"
    },
    "query": {
      "type": "string",
      "description": "Echo of the name query, if given"
    },
    "guidance": {
      "type": "string",
      "description": "How to present the results / what to do when empty"
    },
    "events": {
      "type": "array",
      "description": "Upcoming events, soonest first",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Event name"
          },
          "start": {
            "type": "string",
            "description": "Start date YYYY-MM-DD"
          },
          "end": {
            "type": "string",
            "description": "End date YYYY-MM-DD"
          },
          "location": {
            "type": "string",
            "description": "Venue or locality of the event"
          },
          "city": {
            "type": "string",
            "description": "Destination city of the nearby property"
          },
          "property": {
            "type": "string",
            "description": "Nearby pickyourmatch property name"
          },
          "stays_url": {
            "type": "string",
            "description": "Where-to-stay guide page: suited units with booking links that have the event dates preselected"
          }
        },
        "required": [
          "name",
          "start",
          "city",
          "property",
          "stays_url"
        ]
      }
    }
  },
  "required": [
    "total",
    "events",
    "guidance"
  ]
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada4 herramientas