Skip to main content
Glama

ferryhopper_search_ferry_trips

[ferryhopper] Search ferry trips as an ordered chain of 1 to 5 legs. Takes human-readable location names (e.g. city or port name) for each leg, not port codes — no need to call get_ports first. Availability flags (cabin, vehicles, pets, e-ticket) are reported per segment.

  • One leg: a plain one-way search.

  • Two legs where leg 2 reverses leg 1 (e.g. leg 1 Piraeus→Mykonos, leg 2 Mykonos→Piraeus): a round trip.

  • Up to 5 legs otherwise (e.g. A to B, then B to C, then C to D): an island-hopping chain.

Legs after the first must depart from the location the previous leg arrived at, and must be in chronological order (a later leg may share the same date as an earlier one, but may not precede it).

The response returns each leg's available options independently (legs[].options) — options are never filtered against another leg's options. Consecutive legs must leave enough time between one leg's arrival and the next leg's departure to be a valid connection; this is not pre-filtered server-side or reflected in this output, so do not assume every combination of options across legs is a valid connection — the widget the user interacts with enforces this.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
legsYesAn ordered chain of sailing legs. A one-way search is a single leg. A round trip is 2 legs where leg 2 reverses leg 1 (e.g. leg 1 Piraeus→Mykonos, leg 2 Mykonos→Piraeus). An island-hopping chain is up to 5 legs, e.g. A→B, then B→C, then C→D. Each leg after the first must depart from the location the previous leg arrived at.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden and does so well: it discloses that options are returned independently per leg and that valid connections are NOT pre-filtered server-side, warning the agent not to assume every cross-leg combination is valid. It omits any auth, rate-limit, or pagination behavior, hence not a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose, then uses tight bullets to explain leg counts and a short paragraph for the connection caveat. It is somewhat long for a one-parameter tool, but nearly every sentence conveys a distinct constraint rather than filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by describing the response shape (legs[].options) and the unfiltered-connection caveat. Combined with the input structure and the get_ports shortcut, this is nearly complete; only tangential details like price fields or result limits are unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents each field (locations must be human-readable names, dates ISO YYYY-MM-DD). The description still adds genuine meaning beyond the schema: the precise chronological rule ('a later leg may share the same date as an earlier one, but may not precede it') and the round-trip detection heuristic.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Search ferry trips as an ordered chain of 1 to 5 legs') and explains the leg-count semantics (one-way, round trip, island-hopping). It distinguishes itself from get_ports ('no need to call get_ports first') but not from the near-identically named sibling ferryhopper_search_trips, leaving some ambiguity about when each applies.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for interpreting leg counts and the constraints that legs must connect and be chronological, plus an explicit shortcut (human-readable names, skip get_ports). It stops short of naming when to prefer this over the sibling ferryhopper_search_trips or ferryhopper_get_direct_connections_for_ports, so exclusions are absent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.