Angling Lines
Server Details
Carp fishing lakes in France: search venues, check availability, get week prices, book.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 8 tools
Most tools have clear boundaries: get_quote quotes a fixed week, list_crossings enumerates crossing options, list_swims checks availability, search_venues finds venues, venues_available_on_date checks availability. However, list_swims and venues_available_on_date both deal with availability, and search_venues with a date also returns availability, which could cause some confusion.
Tool names mostly follow a verb_noun pattern: get_quote, list_crossings, list_swims, list_venues, prepare_booking, search_categories, search_venues, venues_available_on_date. The last one breaks the pattern (noun_verb_phrase instead of verb_noun), and search_* vs list_* are both used for listing, but overall the pattern is fairly consistent.
8 tools is well within the ideal 3-15 range and each tool serves a distinct step in the booking workflow: discover venues, filter/search, check availability, quote, prepare booking. No redundant tools.
The tool surface covers the core booking journey: search/list venues, check availability, get quotes, list crossings, and prepare booking. Minor gaps: no tool to actually confirm/create a booking (prepare_booking only creates a prefill link), and no tool to manage or cancel existing bookings, but the stated purpose is to prepare trips for the review page, so this is acceptable.
Available Tools
8 toolsget_quoteGet QuoteARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cars | No | 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 | Yes | The Saturday arrival date of the 7-day week, as YYYY-MM-DD. Every stay runs Saturday to Saturday. | |
| vans | No | Number of vans travelling. Preserve the customer's count in all crossing and booking calls. Defaults to 0. | |
| swims | No | Chosen swim numbers from list_swims; omit for suitable available defaults. Requote after changing swims. | |
| venue | Yes | The venue to quote, by name or slug, e.g. "Beaurepaire". | |
| anglers | Yes | 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 | No | Quote the venue exclusively for this party. Some party sizes force exclusive use anyway. | |
| non_anglers | No | Number of non-fishing guests. Defaults to 0. | |
| booking_option | No | 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 | No | 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 | No | Selected accommodation IDs returned by list_swims for this date. GCL booking_option includes the matching cabin automatically. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, and the description adds meaningful behavioral context: prices are live, include the venue price plus cheapest crossing for quoted vehicles, are in GBP, and unavailable weeks return a structured unavailable result rather than a price. This is exactly the kind of behavioral disclosure that helps an agent set expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the primary action and required inputs, then key operational details. Every sentence adds value, and no information is wasted or redundant with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 11-parameter tool with no output schema, the description covers the essential behavioral outcomes: what is quoted, what the price includes, the currency, and the unavailable result shape. The schema covers parameter details, so nothing critical is missing for an agent to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all 11 parameters with descriptions, so the schema carries the semantic burden. The description adds only high-level context about the party, vehicles, and currency rather than parameter-specific detail. Baseline 3 is appropriate given 100% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Quote one Angling Lines venue for one fixed 7-day week' with the exact inputs (venue name/slug, Saturday arrival date, party) and the output (total price). This clearly distinguishes get_quote from sibling list/search/prepare tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly communicates the operation and context: quoting a single venue for a fixed week from the live booking engine, and returning unavailable when not free. It does not explicitly name alternatives or state when not to use it, but the purpose and the sibling list make the distinction inferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_crossingsList Channel CrossingsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cars | No | 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 | Yes | The Saturday arrival date of the 7-day week, as YYYY-MM-DD. | |
| vans | No | Number of vans travelling. Use the same confirmed count as get_quote. Defaults to 0. | |
| swims | No | Chosen swim numbers from list_swims; omit for suitable available defaults. Requote after changing swims. | |
| venue | Yes | The venue being booked, by name or slug, e.g. "Beaurepaire". | |
| anglers | Yes | 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 | No | Whether the venue is being booked exclusively. | |
| non_anglers | No | Number of non-fishing guests. Defaults to 0. | |
| booking_option | No | 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 | No | 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 | No | Selected accommodation IDs returned by list_swims for this date. GCL booking_option includes the matching cabin automatically. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds useful behavioral context: results are ordered cheapest first, the price is the TOTAL holiday price with that crossing, the cheapest option matches get_quote, and availability is subject to sailing availability at checkout. It does not detail pagination or result limits, but for a list tool with read-only/idempotent annotations this is solid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no waste. The first sentence states the core purpose and ordering, the second lists the return fields and downstream usage, and the third adds the two most important caveats (price match and availability). Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with 100% schema coverage and no output schema, the description is nearly complete. It explains the return fields, the ordering, the price semantics, the downstream consumer (prepare_booking), and the availability caveat. The only minor gap is that it does not describe the exact structure of the route ids or how many options are typically returned, but that is not essential for selecting and invoking the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 11 parameters thoroughly. The description adds the relationship between the returned route ids and prepare_booking, and clarifies that the price is the total holiday price, but it does not need to repeat parameter details. Baseline 3 is appropriate when the schema carries the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List'), a precise resource ('Channel crossing choices for one trip'), and the key dimensions (venue, Saturday arrival date, party) with an ordering ('cheapest first'). It also distinguishes itself from siblings by naming prepare_booking as the downstream consumer of the route ids, so an agent can tell it apart from get_quote and list_swims.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: it is for one trip, cheapest first, and the route ids are to pass to prepare_booking when the customer picks one. It also notes the cheapest option matches get_quote and that crossing choice is subject to sailing availability. It does not explicitly say when NOT to use it versus get_quote or list_swims, but the context is strong enough to route an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_swimsList Swim AvailabilityARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | The Saturday arrival date of the 7-day week, as YYYY-MM-DD. | |
| venue | Yes | The venue, by name or slug, e.g. "Fullys Lake". | |
| anglers | No | Actual number of anglers, not package or swim capacity. Pass it so the tool can check which choices fit the party. | |
| exclusive | No | Whether the customer wants the venue exclusively. | |
| non_anglers | No | Number of non-fishing guests. Defaults to 0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, lowering the bar. The description adds context beyond these: what data is returned (free/taken swim numbers, capacities, venue-specific rules, map URL) and the behavioral rule that single-swim requests at Golden Carp Lake must not be silently expanded. The 'never silently expand' instructions describe agent behavior rather than tool mechanics, but they still add operational context that complements the read-only annotation. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
At roughly 103 words across six sentences, the description is long but justified by the complexity of the Golden Carp Lake special case and downstream routing. It is front-loaded: core purpose first, then return values, then special-case rules, then general guidance. Every sentence earns its place, though the middle could arguably be tightened without losing the critical prohibitions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given five parameters, no output schema, and the special Golden Carp Lake logic, the description is thorough: it states what is checked, what is returned, venue-specific handling, and downstream tool routing. The only gap is absence of explicit output-format details (no output schema exists to carry that burden), but the enumerated return types (free/taken numbers, capacities, rules, map URL) give the agent a solid model of the result. Sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3 and the schema already documents all five parameters with individual descriptions. The description reinforces two of them ('specific Saturday date' maps to date, 'actual party' maps to anglers), and it mentions accommodation_ids and booking_options as downstream values rather than this tool's parameters. This adds minor reinforcement but no new semantic detail beyond what the schema provides, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Check swim and accommodation availability for a venue on a specific Saturday date and actual party,' and lists concrete outputs (free/taken swim numbers, capacities, venue-specific rules, map URL). It distinguishes itself from list_crossings and list_venues by content, though it doesn't explicitly contrast with venues_available_on_date, a sibling with potentially overlapping scope. A clear purpose overall, but sibling differentiation is implicit rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides exceptionally detailed usage direction: it names the Golden Carp Lake special case (four fixed booking_options, never individual swims), prescribes the exact flow (explain package, obtain acceptance before passing booking_option to get_quote, list_crossings, or prepare_booking), and states explicit prohibitions ('Never silently expand a single-swim request or increase the party to package capacity'). It also covers general venues ('pass chosen swims and accommodation_ids, or allow suitable free defaults') and flags that choices affect price, so the final selection must be quoted. This is proactive, alternative-routing guidance that leaves little to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_venuesList VenuesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint and idempotentHint, so the safety profile is covered. The description adds context that it returns the full catalogue with headline facts and boolean flags, but it does not describe potential performance implications (e.g., large payload) or pagination behavior. While this is useful, the lack of such details means it doesn't go beyond the annotations sufficiently to warrant a higher score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a compact two-sentence block that front-loads the core purpose and scope. It includes all essential information—content, flags, URLs, usage guidance, and no-argument note—with zero filler. Every sentence earns its place, and the structure is well-organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (no parameters, no output schema), and the annotations cover read-only and idempotent behavior. The description fully explains what the response contains boats, flags, URLs—and explicitly warns it is not availability. Nothing an agent needs to correctly invoke this tool is missing, given the absence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, so the schema is trivially complete. The description effectively explains that no arguments are needed)Skip, which directly addresses the absence of parameters. It also explains the return payload's structure (features, URLs), which adds value not derivable from the empty schema. This is more than the baseline 4 for zero parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool enumerates every bookable Angling Lines carp fishing venue in France, with a specific verb 'List' and a defined resource. It explicitly distinguishes itself from the sibling search_venues by noting that feature keys match filter names, which is a specific and actionable distinction. This is not a tautology and immediately conveys the tool's unique role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool versus alternatives, directly recommending 'prefer search_venues to filter server-side'. It also clarifies that it returns the full catalogue and is not an availability check, which distinguishes it from venues_available_on_date. This is high-quality usage guidance with clear exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_bookingPrepare BookingARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cars | No | 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 | Yes | The Saturday arrival date of the 7-day week, as YYYY-MM-DD. Every stay runs Saturday to Saturday. | |
| vans | No | Number of vans travelling. Pass the customer's confirmed count from get_quote/list_crossings unchanged. Defaults to 0. | |
| swims | No | 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 | Yes | The venue to book, by name or slug, e.g. "Beaurepaire". | |
| anglers | Yes | 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 | No | 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 | No | Book the venue exclusively for this party. Some party sizes force exclusive use anyway. | |
| non_anglers | No | Number of non-fishing guests. Defaults to 0. | |
| booking_option | No | 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 | No | Inbound crossing route id from list_crossings. Must be given together with outbound_route_id. | |
| include_crossing | No | 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 | No | Selected accommodation IDs returned by list_swims for this date. GCL booking_option includes the matching cabin automatically. | |
| outbound_route_id | No | Outbound crossing route id from list_crossings. Omit (with inbound_route_id) to book the cheapest crossing. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, but the description adds critical specifics: 'creates nothing until the customer opens it' and 'Nothing is held or booked until checkout is completed.' It also discloses that dog crossing fees are not included in the quote and that missing choices return a reason. This goes beyond the annotation safety profile to explain exact non-effects and error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded: it opens with the core purpose, immediately clarifies non-creation behavior, gives usage timing, and then error handling. Each sentence adds distinct value—no fluff or repetition. It is structured logically, moving from what it does to when to use it to what happens on failure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (14 parameters, 3 required), the description covers all essential workflow aspects: what it prepares, what it returns (live total, signed prefill link), when to call, what happens with missing/unavailable choices, and that nothing is held until checkout. The schema handles parameter-level details, so the description focuses on the overall flow, making it complete for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% – every parameter has a detailed description in the input schema. The tool description does not add extra meaning to any parameter; it only references overall context like GCL booking_option and crossing, which are already described in the schema. Baseline 3 applies because the schema carries the full semantic load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise action (prepare a confirmed trip), the exact resources involved (swims, accommodation, GCL booking_option, crossing), and the destination (Angling Lines review page). It distinguishes itself from siblings like get_quote (quotes) and list_swims/list_crossings (lookups) by focusing on preparation rather than retrieval or quoting.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to call: 'Call after the customer confirms the venue, Saturday date, party and choices.' It also provides an alternative path when choices are missing/unavailable: resolve in chat with list_swims/list_crossings, and notes GCL can be booked through chat. This gives clear timing and fallback guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_categoriesSearch CategoriesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | The category slug to open, e.g. "big-carp-lakes". Omit it to list every category. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds meaningful behavioral context beyond the annotations: it explains the two distinct behaviors (list-all vs. drill-in), discloses that results include descriptions and venue counts, and reveals the curation aspect (hand-picked, not filterable). This is useful context that the annotations alone don't provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: the first defines the resource and gives examples, the second explains the two invocation modes, and the third provides the key differentiator from sibling tools. Information is front-loaded with the core purpose first, and there is zero redundancy with the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, single-optional-parameter tool with no output schema, the description is nearly complete. It covers what the tool does, how to invoke it in both modes, what the response contains (descriptions, venue counts, bookable venues), and why it's distinct from alternatives. The only minor gap is that it doesn't specify the exact response format, but with no output schema and a simple list-returning tool, this is a small omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents the 'category' parameter. The description adds value by explaining the semantics of omitting vs. providing the parameter, and gives a concrete example slug ('big-carp-lakes'). This goes beyond the schema's basic description and clarifies the parameter's optionality and effect.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Browse'), a specific resource ('curated venue categories'), and gives concrete examples of what those categories are. It also distinguishes itself from sibling tools by noting these lists are hand-picked and cannot be reproduced by filtering on venue attributes, which clearly separates it from search_venues and list_venues.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly explains the two usage modes: calling with no arguments lists all categories, while passing a category slug opens the bookable venues in that category. It also provides a clear exclusion criterion — these curated lists cannot be reproduced by filtering on venue attributes — which tells the agent when NOT to use this tool in favor of search_venues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_venuesSearch VenuesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | 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 | No | Only venues where meals are available. | |
| months | No | 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 | No | Only lakes whose accommodation sleeps at least this many. Applies with "accommodation". | |
| anglers | No | Number of anglers (fishing guests) in the party. Defaults to 1. | |
| catfish | No | Only venues stocked with catfish. | |
| category | No | Narrow to a curated search category by slug, e.g. "big-carp-lakes". Call search_categories for the slugs that exist. | |
| bait_boats | No | Only venues where bait boats are allowed. | |
| campervans | No | Only venues that take campervans and motorhomes. | |
| min_carp_lb | No | Only lakes whose carp record is at least this many pounds, e.g. 60. | |
| non_anglers | No | Number of non-fishing guests travelling with the party. Defaults to 0. | |
| tackle_hire | No | Only venues where tackle can be hired. | |
| bait_on_site | No | Only venues selling bait on site. | |
| dogs_allowed | No | Only venues that accept dogs and other pets. | |
| rowing_boats | No | Only venues with rowing boats. | |
| accommodation | No | Only lakes with on-site accommodation, rather than bivvy fishing. | |
| all_inclusive | No | Only all-inclusive venues. | |
| min_lake_acres | No | Only lakes of at least this many acres, e.g. 10. | |
| pool_or_hot_tub | No | Only venues with a swimming pool or a hot tub. | |
| crossing_optional | No | Only venues bookable WITHOUT a Channel crossing — the holiday is priced venue-only and the customer arranges their own travel. | |
| fish_from_accommodation | No | Only lakes where you can fish from the accommodation. Applies with "accommodation". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the safety profile is covered. The description adds genuinely non-obvious behavior: the alternatives computation (venues matching everything but that week, each with nearest earlier/later free Saturday), the whole-catalogue default when no filters are given, and the mutually exclusive date/months modes. It stops short of describing the output shape or the Saturday-only constraint, which lives in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded and every clause carries information — there is no filler or restating of the schema. The description is dense and long, but the length is justified by 21 optional parameters; it would earn a 5 with slight structural segmentation of the modes and filter groups.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 21-parameter, zero-required-parameter search tool with no output schema, the description covers the default behavior, both query modes, filter combinations, and the category dependency quite thoroughly. Minor gaps: it never sketches the returned venue fields, and the Saturday-only date rule is left entirely to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the per-parameter baseline is already satisfied. The description adds value by organizing the 18+ filters into semantic groups (party size, lake facts, facilities) and by explaining the interplay of 'date' vs 'months' and the 'category'→search_categories dependency beyond what each parameter's own description states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with 'The tool for "find me a lake"' and a specific verb+resource: 'search the Angling Lines catalogue by party size, features and availability.' This clearly positions it as the full catalogue search and distinguishes it from search_categories (the slug source) and the more targeted sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit usage context: call with nothing for the whole catalogue, combine filters, add a 'date' for availability plus alternatives, or use 'months' to scan whole months, and narrow with 'category' using slugs from search_categories. It names one cross-tool dependency but never states when NOT to use this tool versus siblings like venues_available_on_date or list_venues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
venues_available_on_dateVenues Available On DateARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | 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 | No | 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 | Yes | Number of anglers (fishers) in the party. | |
| non_anglers | No | Number of non-fishing guests travelling with the party. Defaults to 0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds useful behavioral context: stays are fixed 7-day weeks, arrival must be a Saturday, non-Saturday dates are rejected, and only venues with real availability are returned. It doesn't detail pagination or exact response shape, but for a read-only lookup tool this is strong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: it states the core purpose in the first sentence, then adds the critical date-format constraint, then the return behavior, then the sibling differentiation. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only lookup tool with 100% schema coverage and no output schema, the description covers the essential context: what it returns, the date constraints, the default behavior, and when to use it instead of list_venues. It could mention whether results are sorted or limited, but nothing critical is missing for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters. The description adds value by explaining the relationship between date and month (mutually exclusive modes), the Saturday constraint, and the default-to-current-month behavior, which goes beyond the schema's individual parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Check'), a specific resource ('Angling Lines venues'), and a precise scope ('genuinely have space for a party'). It also explicitly distinguishes itself from list_venues, making it clear this is the availability-checking tool, not the general listing tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use this — not list_venues — whenever the question is about what is free or bookable.' It also explains the two modes (single Saturday vs whole month) and the date format requirements, giving clear when-to-use guidance and naming the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
8 tool updates
- First observed
get_quote - First observed
list_crossings - First observed
list_swims - First observed
list_venues - First observed
prepare_booking - First observed
search_categories - First observed
search_venues - First observed
venues_available_on_date
Related MCP Connectors
Search French mountain holiday rentals and contact owners directly — commission-free.
Search 184,900 swim spots, conditions, water activities, providers and guides worldwide.
Snow forecasts, lift status, season history, costs and AI ski trip planning for Europe
Search 10,500 French castles and read verified entries: hours, prices, accessibility.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceSurf Park live session availability for booking and cancellation. Made by surfers for wave pools worldwideMIT
- FlicenseNot gradedqualityFmaintenanceFrench real estate data platform for AI agents. Identifies property owners likely to sell and tracks behavioral signals on active listings. Coverage: metropolitan France.-
- AlicenseNot gradedqualityCmaintenanceProvides lake conditions, fish-stocking records, fishing-favorability scoring, and live weather for outdoor recreation AI agents, powering trip-planning and fishing apps with 72,000+ US lakes and 293,000+ stocking events.MIT
- AlicenseAqualityAmaintenanceSearch vacation rental properties, check real-time availability, get canonical pricing quotes, and create direct bookings. Each property is its own node with live data. Supports staircase pricing, seasonal rates, and 11 languages.413220 npm3Apache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.