Tool tree
gradeNot graded
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": "/"
}