← WebMCP Directory

Tool tree

visitkeswick.com

Travel & EventsTools verified
Website
Keswick in the northern Lake District — where to stay, what to do, where to eat, and what is on this month.
Explore capabilities

    page: Every page

    discover_venuesAnswer

    Browse ranked venue candidates for a date-free query. This returns no price or availability. For the full interface, connect to the Visit Keswick, Lake District MCP server at https://visitkeswick.com/mcp.

    View tool JSON
    {
      "name": "discover_venues",
      "kind": "answer",
      "impl": "imperative",
      "description": "Browse ranked venue candidates for a date-free query. This returns no price or availability. For the full interface, connect to the Visit Keswick, Lake District MCP server at https://visitkeswick.com/mcp.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "query": {
            "type": "object",
            "properties": {
              "@context": {
                "description": "Optional ARD v0.91 JSON-LD context.",
                "type": "string",
                "const": "https://agenticresourcediscovery.org/context/v1"
              },
              "text": {
                "description": "Natural-language query, e.g. \"boutique hotels in London with a spa\".",
                "type": "string",
                "minLength": 1,
                "maxLength": 2048
              },
              "filter": {
                "description": "Optional dot-path field filters; each value is an array of strings (OR within a field), e.g. {\"tags\":[\"spa\"]}.",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            },
            "required": [
              "text"
            ],
            "additionalProperties": false
          },
          "stay": {
            "description": "Optional. When given, results are grounded in live availability and offers for these dates and party. When absent, dates and party written in the question still apply.",
            "type": "object",
            "properties": {
              "checkIn": {
                "description": "Arrival date, ISO YYYY-MM-DD.",
                "type": "string",
                "minLength": 1
              },
              "checkOut": {
                "description": "Departure date, ISO YYYY-MM-DD.",
                "type": "string",
                "minLength": 1
              },
              "party": {
                "type": "object",
                "properties": {
                  "adults": {
                    "description": "Number of adults.",
                    "type": "integer",
                    "exclusiveMinimum": 0,
                    "maximum": 30
                  },
                  "children": {
                    "description": "Number of children.",
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 30
                  }
                },
                "required": [
                  "adults"
                ]
              }
            },
            "required": [
              "checkIn",
              "checkOut",
              "party"
            ]
          },
          "party": {
            "description": "Who is travelling, when known without dates (children change what suits). Ignored when `stay` carries its own party.",
            "type": "object",
            "properties": {
              "adults": {
                "description": "Number of adults.",
                "type": "integer",
                "exclusiveMinimum": 0,
                "maximum": 30
              },
              "children": {
                "description": "Number of children.",
                "type": "integer",
                "minimum": 0,
                "maximum": 30
              }
            },
            "required": [
              "adults"
            ]
          },
          "assumeParty": {
            "description": "Optional. The party to check live availability for when the question names dates but nobody is counted (\"next weekend\"). The question's own party, `party` or `stay` always wins; `meta.queryValues.guests` stays empty, so the answer can say the party was assumed.",
            "type": "object",
            "properties": {
              "adults": {
                "description": "Number of adults.",
                "type": "integer",
                "exclusiveMinimum": 0,
                "maximum": 30
              },
              "children": {
                "description": "Number of children.",
                "type": "integer",
                "minimum": 0,
                "maximum": 30
              }
            },
            "required": [
              "adults"
            ]
          },
          "pageSize": {
            "description": "Maximum number of results to return.",
            "type": "integer",
            "minimum": 1,
            "maximum": 100
          },
          "render": {
            "description": "Ask for layout hints alongside the results. Delivery (one body or a stream) is chosen by the Accept header, not here.",
            "type": "object",
            "properties": {
              "a2ui": {
                "description": "Also return `ui`: an A2UI surface for the same results. A hint; the results are complete without it.",
                "type": "boolean"
              },
              "catalogs": {
                "description": "A2UI catalog ids the caller can render.",
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            }
          }
        },
        "required": [
          "query"
        ]
      },
      "page": "/"
    }
    match_venuesAnswer

    Ground venue candidates in live price and availability for a stay. Booking itself stays on the authenticated UCP or MCP flow at https://visitkeswick.com/mcp.

    View tool JSON
    {
      "name": "match_venues",
      "kind": "answer",
      "impl": "imperative",
      "description": "Ground venue candidates in live price and availability for a stay. Booking itself stays on the authenticated UCP or MCP flow at https://visitkeswick.com/mcp.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "places": {
            "description": "The places to match: ids, or a name with optional website and location.",
            "minItems": 1,
            "maxItems": 250,
            "type": "array",
            "items": {
              "anyOf": [
                {
                  "type": "object",
                  "properties": {
                    "id": {
                      "description": "A place id from discover or a previous match.",
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 128
                    }
                  },
                  "required": [
                    "id"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "name": {
                      "description": "The place name as the caller knows it.",
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 200
                    },
                    "website": {
                      "description": "The place's own website, if known; the strongest identity signal.",
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 500
                    },
                    "location": {
                      "description": "Town or area, to tell apart places with the same name.",
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 200
                    }
                  },
                  "required": [
                    "name"
                  ],
                  "additionalProperties": false
                }
              ]
            }
          },
          "projection": {
            "description": "`detail` (default) is the full record; `listing` is the compact card a list page needs.",
            "type": "string",
            "enum": [
              "detail",
              "listing"
            ]
          },
          "stay": {
            "description": "When given, each matched place carries its live rooms and offers for these dates and party.",
            "type": "object",
            "properties": {
              "checkIn": {
                "description": "Arrival date, ISO YYYY-MM-DD.",
                "type": "string",
                "minLength": 1
              },
              "checkOut": {
                "description": "Departure date, ISO YYYY-MM-DD.",
                "type": "string",
                "minLength": 1
              },
              "party": {
                "type": "object",
                "properties": {
                  "adults": {
                    "description": "Number of adults.",
                    "type": "integer",
                    "exclusiveMinimum": 0,
                    "maximum": 30
                  },
                  "children": {
                    "description": "Number of children.",
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 30
                  }
                },
                "required": [
                  "adults"
                ]
              }
            },
            "required": [
              "checkIn",
              "checkOut",
              "party"
            ]
          },
          "render": {
            "description": "Ask for layout hints alongside the results. Delivery (one body or a stream) is chosen by the Accept header, not here.",
            "type": "object",
            "properties": {
              "a2ui": {
                "description": "Also return `ui`: an A2UI surface for the same results. A hint; the results are complete without it.",
                "type": "boolean"
              },
              "catalogs": {
                "description": "A2UI catalog ids the caller can render.",
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            }
          }
        },
        "required": [
          "places"
        ]
      },
      "page": "/"
    }
    book_venueSensitive Action

    Start or complete a booking from a grounded match option. A reservation only proceeds with the signed Cart Mandate for this option or the user session on the Visit Keswick, Lake District booking flow at https://visitkeswick.com/mcp.

    View tool JSON
    {
      "name": "book_venue",
      "kind": "transact",
      "impl": "imperative",
      "description": "Start or complete a booking from a grounded match option. A reservation only proceeds with the signed Cart Mandate for this option or the user session on the Visit Keswick, Lake District booking flow at https://visitkeswick.com/mcp.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "description": "Reserve one current offer for one entity. Its date, party and price are bound inside the sealed offer.",
        "type": "object",
        "properties": {
          "entityId": {
            "description": "The place id returned by discover or match.",
            "type": "string",
            "minLength": 1,
            "maxLength": 256
          },
          "offerId": {
            "description": "The opaque, sealed offer id returned by match.",
            "type": "string",
            "minLength": 1,
            "maxLength": 4096
          },
          "mandate": {
            "description": "A signed AP2 Cart Mandate for a foreign caller, bound to this entity and offer.",
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          },
          "approvalId": {
            "description": "The approval the guest gave this offer in their own Selfe account, returned as approval.id when the booking first needed it. A booking is confirmed only with the guest's approval.",
            "type": "string",
            "minLength": 1,
            "maxLength": 64
          },
          "render": {
            "type": "object",
            "properties": {
              "a2ui": {
                "type": "boolean"
              },
              "catalogs": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            }
          }
        },
        "required": [
          "entityId",
          "offerId"
        ]
      },
      "page": "/"
    }
    prepare_booking_handoffAction

    Prepares a short-lived Visit Keswick browser review link for the selected live option at a published Visit Keswick venue. It never reserves, pays or confirms. The result states whether the link allows review only (booking confirmation and payment are gated separately); the guest signs in on Visit Keswick to see the current price and terms.

    View tool JSON
    {
      "name": "prepare_booking_handoff",
      "kind": "act",
      "impl": "imperative",
      "description": "Prepares a short-lived Visit Keswick browser review link for the selected live option at a published Visit Keswick venue. It never reserves, pays or confirms. The result states whether the link allows review only (booking confirmation and payment are gated separately); the guest signs in on Visit Keswick to see the current price and terms.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "venueId",
          "handle"
        ],
        "properties": {
          "venueId": {
            "type": "string",
            "pattern": "^(?:slf_[0-9A-HJKMNP-TV-Z]{26}|[a-f0-9]{24})$"
          },
          "section": {
            "type": "string",
            "enum": [
              "stay",
              "eat",
              "do"
            ],
            "description": "Choose the listing section when this venue has more than one."
          },
          "handle": {
            "type": "string",
            "pattern": "^sopt_[A-Za-z0-9_-]+$",
            "maxLength": 20000,
            "description": "The current sealed selected-option handle from live availability. Never invent an option or pass a price."
          }
        }
      },
      "page": "/"
    }