LayUp Sports Booking
Search bookable London courts, pitches, lanes and pickup games across every major UK provider.
使うべきか
品質と安全性
検出事項(2)
- HIGH
- LOWcreate_alert 内
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"sports-booking": {
"url": "https://mcp.layupsport.com"
}
}
}リモートエンドポイント
https://mcp.layupsport.comstreamable-httpできること
ツール一覧
ツール(5)
🟢search_slots(sport, area, date_from, date_to, time_from, ...)
Search bookable sports slots in London across every provider LayUp aggregates. Use when a user wants to find a court, pitch, lane, class or pickup game for football, tennis, squash, padel or swimming. Filter by sport, area/borough, date range, time of day and max price. Returns upcoming slots with venue, London-local time, price, provider and a booking link. Times default to the next 7 days.
入力スキーマ
{
"type": "object",
"properties": {
"sport": {
"type": "string",
"enum": [
"Football",
"Tennis",
"Squash",
"Padel",
"Swimming"
],
"description": "One of Football, Tennis, Squash, Padel, Swimming."
},
"area": {
"type": "string",
"description": "Where to look. Resolved geographically, so any of these work: a borough ('Hackney'), a neighbourhood ('Shoreditch', 'Maida Vale'), a region ('North London', 'Central London'), a postcode or outward code ('W9 2RF', 'SE1'), or a venue name ('Clissold'). Returns venues near the resolved point, not just ones with the word in their name."
},
"date_from": {
"type": "string",
"description": "ISO date or datetime — earliest start. Defaults to now."
},
"date_to": {
"type": "string",
"description": "ISO date or datetime — latest start. Defaults to 7 days out."
},
"time_from": {
"type": "string",
"description": "London-local earliest start time of day, 'HH:MM' (e.g. '18:00'). Samples the soonest upcoming slots; combine with date_from to target a specific day."
},
"time_to": {
"type": "string",
"description": "London-local latest start time of day, 'HH:MM'."
},
"max_price": {
"type": "number",
"description": "Maximum price in GBP. Published prices above this are removed; unpublished-price slots ('Check App', common for padel/tennis) are kept and flagged."
},
"booking_type": {
"type": "string",
"enum": [
"spot",
"court",
"pitch"
],
"description": "'spot' = book one place (pickup game / swim seat), 'court' = whole court, 'pitch' = whole pitch."
},
"min_courts": {
"type": "integer",
"description": "Only return venues with at least this many courts/pitches free AT THE SAME TIME. Use for groups: padel and tennis are 4 per court, so 16 people need 4. Nobody else can answer this — venues cannot see each other and the booking platforms only see their own sites. Results are one slot per venue; that venue had at least this many free at that hour."
},
"limit": {
"type": "integer",
"description": "Max results to return (1-30, default 15)."
}
},
"additionalProperties": false
}🟢refine_search(sport, area, date_from, date_to, time_from, ...)
Find out WHERE and WHEN there is availability, before asking the user a clarifying question. Takes the same filters as search_slots and returns counts by area, day, time band and price — not slots. Use it when the request is under-specified ('find me a tennis court', 'somewhere for a group') so the question you ask back is grounded in real supply: ask 'Wandsworth (8 venues) or Richmond (7)?' rather than an open 'which area?'. Also use it when a search returned nothing, to say which nearby area or time DOES have slots instead of reporting a dead end.
入力スキーマ
{
"type": "object",
"properties": {
"sport": {
"type": "string",
"enum": [
"Football",
"Tennis",
"Squash",
"Padel",
"Swimming"
],
"description": "One of Football, Tennis, Squash, Padel, Swimming."
},
"area": {
"type": "string",
"description": "Optional. Same geographic resolution as search_slots — borough, neighbourhood, region, postcode or venue name. Omit to see every area."
},
"date_from": {
"type": "string",
"description": "ISO date or datetime — earliest start. Defaults to now."
},
"date_to": {
"type": "string",
"description": "ISO date or datetime — latest start. Defaults to 7 days out."
},
"time_from": {
"type": "string",
"description": "London-local earliest start time of day, 'HH:MM'."
},
"time_to": {
"type": "string",
"description": "London-local latest start time of day, 'HH:MM'."
},
"max_price": {
"type": "number",
"description": "Maximum price in GBP."
},
"booking_type": {
"type": "string",
"enum": [
"spot",
"court",
"pitch"
],
"description": "'spot', 'court' or 'pitch'."
},
"min_courts": {
"type": "integer",
"description": "Only count venue-hours with at least this many free at the same time. Same meaning as in search_slots."
}
},
"additionalProperties": false
}🟢list_sports
List the sports LayUp covers with a count of slots available in the next 7 days. Useful as a quick overview before a more specific search.
入力スキーマ
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟢get_venue(venue_slug, limit)
List upcoming bookable slots at a single venue, identified by its venue_slug (as returned by search_slots). Use to drill into one venue after a search.
入力スキーマ
{
"type": "object",
"properties": {
"venue_slug": {
"type": "string",
"description": "The venue_slug from a search_slots result."
},
"limit": {
"type": "integer",
"description": "Max slots to return (1-30, default 15)."
}
},
"required": [
"venue_slug"
],
"additionalProperties": false
}🟡create_alert(email, sport, area, venue_names, venue_slugs, ...)
Set up an email alert for the user: LayUp watches for NEW matching slots (e.g. a cancellation freeing up a peak court) and emails them when one appears. Use when the user can't find a slot now and wants to be notified, or asks to 'monitor'/'watch'/'let me know when'. Requires their email. A confirmation email is sent first — the user must click confirm before any alerts fire (so always tell them to check their inbox). LayUp does the watching; the notification arrives by email, not in this chat.
入力スキーマ
{
"type": "object",
"properties": {
"email": {
"type": "string",
"description": "The user's REAL email address, as given by them (required — alerts are emailed here). Never invent, guess or substitute a placeholder like [email protected]; if you don't have it, ask the user first."
},
"sport": {
"type": "string",
"enum": [
"Football",
"Tennis",
"Squash",
"Padel",
"Swimming"
],
"description": "One of Football, Tennis, Squash, Padel, Swimming. Omit for any."
},
"area": {
"type": "string",
"description": "Where to watch, resolved geographically: a borough ('Hackney'), a neighbourhood ('Maida Vale'), a region ('North London'), or a postcode ('W9 2RF', 'SE1'). A postcode is the most precise option when the user gives one. NOT a venue name — to watch a specific venue use venue_names. Omit for all London."
},
"venue_names": {
"type": "array",
"items": {
"type": "string"
},
"description": "Pin the alert to specific venues BY NAME, exactly as shown in search results (e.g. [\"Hay's Galleria\", \"Padel Box\"]). Use this whenever the user names venues — the server resolves names to the right venue(s). Prefer this over venue_slugs."
},
"venue_slugs": {
"type": "array",
"items": {
"type": "string"
},
"description": "Pin the alert to specific venues by their exact venue_slug (only if you already have slug values from search_slots). For most cases use venue_names instead. Omit for any venue."
},
"time_from": {
"type": "string",
"description": "Earliest London time-of-day, 'HH:MM' (e.g. '18:00')."
},
"time_to": {
"type": "string",
"description": "Latest London time-of-day, 'HH:MM'."
},
"days_of_week": {
"type": "array",
"items": {
"type": "string",
"enum": [
"Mon",
"Tue",
"Wed",
"Thu",
"Fri",
"Sat",
"Sun"
]
},
"description": "Only alert on these days (e.g. ['Sat','Sun'] for weekends). The alert is standing — it keeps watching these days every week until the user unsubscribes. Omit for any day."
},
"max_price": {
"type": "number",
"description": "Only alert on slots at or under this GBP price."
}
},
"required": [
"email"
],
"additionalProperties": false
}コミュニティ
エビデンス