MCP 服务器

Angling Lines

com.anglinglines/angling-lines
旅行与酒店 公开且可连接 MCP 2026-07-28

此 MCP 可以做什么

Searches carp-fishing venues in France, checks availability and pricing, and prepares bookings including accommodation and Channel crossings.

get_quote
Get Quote
Quote one Angling Lines venue for one fixed 7-day week: give a venue name or slug, a Saturday arrival date (YYYY-MM-DD) and the party, and get the total price for the whole party for the whole week. Prices come from the live booking engine — the venue price plus the cheapest Channel crossing for the vehicles quoted — and are in GBP. Returns a structured "unavailable" result, not a price, when that week is not free for that party.
只读 幂等
输入模式
{'type': 'object', 'required': ['venue', 'date', 'anglers'], 'properties': {'cars': {'type': 'integer', 'minimum': 0, 'description': 'Number of cars travelling — crossing costs are per vehicle. Ask when unknown for a crossing quote; do not silently assume 1. Pass 0 for a van-only party. Defaults to 1 for older callers.'}, 'date': {'type': 'string', 'description': 'The Saturday arrival date of the 7-day week, as YYYY-MM-DD. Every stay runs Saturday to Saturday.'}, 'vans': {'type': 'integer', 'minimum': 0, 'description': "Number of vans travelling. Preserve the customer's count in all crossing and booking calls. Defaults to 0."}, 'swims': {'type': 'array', 'items': {'type': 'integer', 'minimum': 1}, 'description': 'Chosen swim numbers from list_swims; omit for suitable available defaults. Requote after changing swims.'}, 'venue': {'type': 'string', 'description': 'The venue to quote, by name or slug, e.g. "Beaurepaire".'}, 'anglers': {'type': 'integer', 'minimum': 1, 'description': 'Actual number of fishing guests supplied by the customer, never a package or swim capacity. Keep 2 guests as 2 even for a package with capacity 5.'}, 'exclusive': {'type': 'boolean', 'description': 'Quote the venue exclusively for this party. Some party sizes force exclusive use anyway.'}, 'non_anglers': {'type': 'integer', 'minimum': 0, 'description': 'Number of non-fishing guests. Defaults to 0.'}, 'booking_option': {'type': 'integer', 'maximum': 4, 'minimum': 1, 'description': 'Golden Carp Lake whole package explicitly chosen by the customer after seeing available list_swims options: 1 cabin & swim 1; 2 all of swims 2,3,4; 3 exclusive without cabin; 4 exclusive with cabin. Never infer a package from a single swim preference such as swim 4. Required for GCL.'}, 'include_crossing': {'type': 'boolean', 'description': 'True when the customer wants a crossing, including cheapest crossing at a crossing-optional venue. False for venue-only. Omit to use the venue default.'}, 'accommodation_ids': {'type': 'array', 'items': {'type': 'integer', 'minimum': 1}, 'description': 'Selected accommodation IDs returned by list_swims for this date. GCL booking_option includes the matching cabin automatically.'}}}
list_crossings
List Channel Crossings
List the Channel crossing choices for one trip — venue, Saturday arrival date (YYYY-MM-DD) and party — cheapest first. Each option gives the route, operator, ferry/tunnel type, crossing time, an overnight flag and the TOTAL holiday price with that crossing, plus the outbound/inbound route ids to pass to prepare_booking when the customer picks one. The cheapest option matches the get_quote price. Crossing choice is subject to sailing availability at checkout.
只读 幂等
输入模式
{'type': 'object', 'required': ['venue', 'date', 'anglers'], 'properties': {'cars': {'type': 'integer', 'minimum': 0, 'description': 'Number of cars travelling. Use the same confirmed count as get_quote; crossing costs are per vehicle. Pass 0 for a van-only party. Defaults to 1 for older callers.'}, 'date': {'type': 'string', 'description': 'The Saturday arrival date of the 7-day week, as YYYY-MM-DD.'}, 'vans': {'type': 'integer', 'minimum': 0, 'description': 'Number of vans travelling. Use the same confirmed count as get_quote. Defaults to 0.'}, 'swims': {'type': 'array', 'items': {'type': 'integer', 'minimum': 1}, 'description': 'Chosen swim numbers from list_swims; omit for suitable available defaults. Requote after changing swims.'}, 'venue': {'type': 'string', 'description': 'The venue being booked, by name or slug, e.g. "Beaurepaire".'}, 'anglers': {'type': 'integer', 'minimum': 1, 'description': 'Actual number of fishing guests supplied by the customer, never a package or swim capacity. Keep 2 guests as 2 even for a package with capacity 5.'}, 'exclusive': {'type': 'boolean', 'description': 'Whether the venue is being booked exclusively.'}, 'non_anglers': {'type': 'integer', 'minimum': 0, 'description': 'Number of non-fishing guests. Defaults to 0.'}, 'booking_option': {'type': 'integer', 'maximum': 4, 'minimum': 1, 'description': 'Golden Carp Lake whole package explicitly chosen by the customer after seeing available list_swims options: 1 cabin & swim 1; 2 all of swims 2,3,4; 3 exclusive without cabin; 4 exclusive with cabin. Never infer a package from a single swim preference such as swim 4. Required for GCL.'}, 'include_crossing': {'type': 'boolean', 'description': 'True when the customer wants a crossing, including cheapest crossing at a crossing-optional venue. False for venue-only. Omit to use the venue default.'}, 'accommodation_ids': {'type': 'array', 'items': {'type': 'integer', 'minimum': 1}, 'description': 'Selected accommodation IDs returned by list_swims for this date. GCL booking_option includes the matching cabin automatically.'}}}
list_swims
List Swim Availability
Check swim and accommodation availability for a venue on a specific Saturday date and actual party. Returns free/taken swim numbers, capacities, venue-specific rules and map URL. Golden Carp Lake sells four fixed booking_options, never individual swims: if asked for one swim, explain the full package and obtain customer acceptance before passing booking_option to get_quote, list_crossings or prepare_booking. Never silently expand a single-swim request or increase the party to package capacity. At other swim venues pass chosen swims and accommodation_ids, or allow suitable free defaults. Choices can affect price, so quote the final selection before confirming.
只读 幂等
输入模式
{'type': 'object', 'required': ['venue', 'date'], 'properties': {'date': {'type': 'string', 'description': 'The Saturday arrival date of the 7-day week, as YYYY-MM-DD.'}, 'venue': {'type': 'string', 'description': 'The venue, by name or slug, e.g. "Fullys Lake".'}, 'anglers': {'type': 'integer', 'minimum': 1, 'description': 'Actual number of anglers, not package or swim capacity. Pass it so the tool can check which choices fit the party.'}, 'exclusive': {'type': 'boolean', 'description': 'Whether the customer wants the venue exclusively.'}, 'non_anglers': {'type': 'integer', 'minimum': 0, 'description': 'Number of non-fishing guests. Defaults to 0.'}}}
list_venues
List Venues
List every bookable Angling Lines carp fishing venue in France, with its headline facts (lake size, swims, capacity, lake record, accommodation), boolean feature flags (dogs_allowed, catfish, pool_or_hot_tub, …) and canonical URLs. The feature keys match the search_venues filter names, so prefer search_venues to filter server-side. Takes no arguments. This is the full catalogue, not an availability check.
只读 幂等
输入模式
{'type': 'object', 'properties': {}}
prepare_booking
Prepare Booking
Prepare a confirmed trip, including selected swims, accommodation, Golden Carp Lake booking_option and crossing, for the Angling Lines review page. Returns a live total and signed prefill link; creates nothing until the customer opens it. Call after the customer confirms the venue, Saturday date, party and choices. Missing or unavailable choices return a reason to resolve IN CHAT with list_swims/list_crossings; GCL can be booked through chat. Nothing is held or booked until checkout is completed.
只读 幂等
输入模式
{'type': 'object', 'required': ['venue', 'date', 'anglers'], 'properties': {'cars': {'type': 'integer', 'minimum': 0, 'description': "Number of cars travelling. Pass the customer's confirmed count from get_quote/list_crossings unchanged, including 0 for a van-only party. Defaults to 1 for older callers."}, 'date': {'type': 'string', 'description': 'The Saturday arrival date of the 7-day week, as YYYY-MM-DD. Every stay runs Saturday to Saturday.'}, 'vans': {'type': 'integer', 'minimum': 0, 'description': "Number of vans travelling. Pass the customer's confirmed count from get_quote/list_crossings unchanged. Defaults to 0."}, 'swims': {'type': 'array', 'items': {'type': 'integer', 'minimum': 1}, 'description': 'Swim NUMBERS the customer chose (from list_swims), e.g. [1, 4]. Omit to auto-pick good free swims — the customer can change them on the review page. Ignored at venues without designated swims.'}, 'venue': {'type': 'string', 'description': 'The venue to book, by name or slug, e.g. "Beaurepaire".'}, 'anglers': {'type': 'integer', 'minimum': 1, 'description': 'Actual number of fishing guests supplied by the customer, never a package or swim capacity. Keep 2 guests as 2 even for a package with capacity 5.'}, 'dog_info': {'type': 'string', 'maxLength': 100, 'description': 'Dog count and breed(s) supplied by the customer, e.g. "2 dogs: Labrador and Spaniel". Ask for missing count/breeds; do not invent them. Only for dog-friendly venues. Saved on the booking and review/edit pages; dog crossing fees are added on the review page, not included in this quote.'}, 'exclusive': {'type': 'boolean', 'description': 'Book the venue exclusively for this party. Some party sizes force exclusive use anyway.'}, 'non_anglers': {'type': 'integer', 'minimum': 0, 'description': 'Number of non-fishing guests. Defaults to 0.'}, 'booking_option': {'type': 'integer', 'maximum': 4, 'minimum': 1, 'description': 'Golden Carp Lake whole package explicitly chosen by the customer after seeing available list_swims options: 1 cabin & swim 1; 2 all of swims 2,3,4; 3 exclusive without cabin; 4 exclusive with cabin. Never infer a package from a single swim preference such as swim 4. Required for GCL.'}, 'inbound_route_id': {'type': 'integer', 'minimum': 1, 'description': 'Inbound crossing route id from list_crossings. Must be given together with outbound_route_id.'}, 'include_crossing': {'type': 'boolean', 'description': 'True when the customer wants a crossing, including cheapest crossing at a crossing-optional venue. False for venue-only. Omit to use the venue default.'}, 'accommodation_ids': {'type': 'array', 'items': {'type': 'integer', 'minimum': 1}, 'description': 'Selected accommodation IDs returned by list_swims for this date. GCL booking_option includes the matching cabin automatically.'}, 'outbound_route_id': {'type': 'integer', 'minimum': 1, 'description': 'Outbound crossing route id from list_crossings. Omit (with inbound_route_id) to book the cheapest crossing.'}}}
search_categories
Search Categories
Browse the curated venue categories Angling Lines maintains — themed collections such as big carp lakes, family-friendly lakes, lakes with a swimming pool, or lakes close to Calais. Called with no arguments it lists every category with its description and venue count; pass a category slug to get the bookable venues in that category. These lists are hand-picked by Angling Lines, so they cannot be reproduced by filtering on venue attributes.
只读 幂等
输入模式
{'type': 'object', 'properties': {'category': {'type': 'string', 'description': 'The category slug to open, e.g. "big-carp-lakes". Omit it to list every category.'}}}
search_venues
Search Venues
The tool for "find me a lake": search the Angling Lines catalogue by party size, features and availability, exactly the way the website search does. Every filter is optional — call it with nothing for the whole catalogue, or combine party size ("anglers", "non_anglers"), lake facts ("min_carp_lb", "min_lake_acres") and facilities ("accommodation", "all_inclusive", "meals", "pool_or_hot_tub", "tackle_hire", "catfish", "dogs_allowed", "campervans", "rowing_boats", "bait_boats", "bait_on_site"). Add a Saturday "date" (YYYY-MM-DD) to get real availability plus "alternatives" — venues that match everything but that week, each with the nearest earlier and later free Saturday — or "months" (["YYYY-MM"]) to scan whole months. Narrow to a curated theme with "category", whose slugs come from search_categories.
只读 幂等
输入模式
{'type': 'object', 'properties': {'date': {'type': 'string', 'description': 'A single Saturday arrival date as "YYYY-MM-DD", e.g. "2026-09-05". Give this to get real availability plus earlier/later alternatives. Stays run Saturday to Saturday, so any other weekday is rejected.'}, 'meals': {'type': 'boolean', 'description': 'Only venues where meals are available.'}, 'months': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Whole months to scan, each as "YYYY-MM", e.g. ["2026-09", "2026-10"]. Use this OR "date". Returns venues with at least one free week in those months.'}, 'sleeps': {'type': 'integer', 'minimum': 1, 'description': 'Only lakes whose accommodation sleeps at least this many. Applies with "accommodation".'}, 'anglers': {'type': 'integer', 'minimum': 1, 'description': 'Number of anglers (fishing guests) in the party. Defaults to 1.'}, 'catfish': {'type': 'boolean', 'description': 'Only venues stocked with catfish.'}, 'category': {'type': 'string', 'description': 'Narrow to a curated search category by slug, e.g. "big-carp-lakes". Call search_categories for the slugs that exist.'}, 'bait_boats': {'type': 'boolean', 'description': 'Only venues where bait boats are allowed.'}, 'campervans': {'type': 'boolean', 'description': 'Only venues that take campervans and motorhomes.'}, 'min_carp_lb': {'type': 'integer', 'minimum': 0, 'description': 'Only lakes whose carp record is at least this many pounds, e.g. 60.'}, 'non_anglers': {'type': 'integer', 'minimum': 0, 'description': 'Number of non-fishing guests travelling with the party. Defaults to 0.'}, 'tackle_hire': {'type': 'boolean', 'description': 'Only venues where tackle can be hired.'}, 'bait_on_site': {'type': 'boolean', 'description': 'Only venues selling bait on site.'}, 'dogs_allowed': {'type': 'boolean', 'description': 'Only venues that accept dogs and other pets.'}, 'rowing_boats': {'type': 'boolean', 'description': 'Only venues with rowing boats.'}, 'accommodation': {'type': 'boolean', 'description': 'Only lakes with on-site accommodation, rather than bivvy fishing.'}, 'all_inclusive': {'type': 'boolean', 'description': 'Only all-inclusive venues.'}, 'min_lake_acres': {'type': 'number', 'minimum': 0, 'description': 'Only lakes of at least this many acres, e.g. 10.'}, 'pool_or_hot_tub': {'type': 'boolean', 'description': 'Only venues with a swimming pool or a hot tub.'}, 'crossing_optional': {'type': 'boolean', 'description': 'Only venues bookable WITHOUT a Channel crossing — the holiday is priced venue-only and the customer arranges their own travel.'}, 'fish_from_accommodation': {'type': 'boolean', 'description': 'Only lakes where you can fish from the accommodation. Applies with "accommodation".'}}}
venues_available_on_date
Venues Available On Date
Check which Angling Lines venues genuinely have space for a party, either on one specific Saturday or across a whole month. Stays are fixed 7-day weeks, so an arrival date must be a Saturday in "YYYY-MM-DD" form; pass "month" as "YYYY-MM" instead to scan a whole month (defaults to the current month). Returns only venues with real availability, each with its free arrival dates and remaining capacity. Use this — not list_venues — whenever the question is about what is free or bookable.
只读 幂等
输入模式
{'type': 'object', 'required': ['anglers'], 'properties': {'date': {'type': 'string', 'description': 'A single Saturday arrival date as "YYYY-MM-DD", e.g. "2026-09-05". Use this OR "month". Stays run Saturday to Saturday, so any other weekday is rejected.'}, 'month': {'type': 'string', 'description': 'A whole month to scan as "YYYY-MM", e.g. "2026-09". Use this OR "date". Defaults to the current month when neither is given.'}, 'anglers': {'type': 'integer', 'minimum': 1, 'description': 'Number of anglers (fishers) in the party.'}, 'non_anglers': {'type': 'integer', 'minimum': 0, 'description': 'Number of non-fishing guests travelling with the party. Defaults to 0.'}}}
已添加
prepare_booking
2026年9月18日 02:40
已添加
list_swims
2026年9月18日 02:40
已添加
list_crossings
2026年9月18日 02:40
已添加
search_venues
2026年9月18日 02:40
已添加
search_categories
2026年9月18日 02:40
已添加
venues_available_on_date
2026年9月18日 02:40
已添加
get_quote
2026年9月18日 02:40
已添加
list_venues
2026年9月18日 02:40