Skip to main content
Glama

Shore excursions

getPortExcursions
Read-onlyIdempotent

Bookable shore excursions and resort day passes in a cruise port, with price, duration, rating and a link. Pass activity (e.g. "scuba", "ATV tours") to narrow to that kind of excursion, with its total, minPrice/maxPrice to narrow by price, and provider (e.g. "Shore Excursions Group", "Viator") to narrow to the company that sells them. To narrow an earlier answer, call again with the same port and activity plus the price or provider. For every port of one sailing, use getSailingExcursions.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "port": "<port>"
    },
    "name": "getPortExcursions"
  }
}

Input Schema

NameRequiredDescriptionDefault
portYesPort name or slug, e.g. "Cozumel"
activityNoA kind of activity, e.g. "scuba", "ATV tours", "snorkeling"; omit for everything
maxPriceNoHighest "from" price per person in US dollars, e.g. 145 for "under $145"; omit for no limit
minPriceNoLowest "from" price per person in US dollars, e.g. 100 for "over $100"; omit for no limit
providerNoWho sells the excursions: "Viator", "Shore Excursions Group", "Resort For A Day" or "Project Expedition"; omit for every provider

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / provider
      Added value: +{
      +  "description": "Who sells the excursions: \"Viator\", \"Shore Excursions Group\", \"Resort For A Day\" or \"Project Expedition\"; omit for every provider",
      +  "maxLength": 80,
      +  "type": "string"
      +}
  2. Changed3 schema fields changed
    • addedInput schema / properties / activity
      Added value: +{
      +  "description": "A kind of activity, e.g. \"scuba\", \"ATV tours\", \"snorkeling\"; omit for everything",
      +  "maxLength": 80,
      +  "type": "string"
      +}
    • addedInput schema / properties / maxPrice
      Added value: +{
      +  "description": "Highest \"from\" price per person in US dollars, e.g. 145 for \"under $145\"; omit for no limit",
      +  "maximum": 100000,
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / minPrice
      Added value: +{
      +  "description": "Lowest \"from\" price per person in US dollars, e.g. 100 for \"over $100\"; omit for no limit",
      +  "maximum": 100000,
      +  "minimum": 0,
      +  "type": "number"
      +}
  3. First observed

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered; the description adds valuable context by disclosing that results include price, duration, rating and a link, and by explaining the re-query narrowing behavior. It does not mention result limits, pagination, or what happens when a port has no excursions, leaving a modest gap.

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 resource and return fields, then parameter usage, then the alternative tool — a logical order with no filler. The second sentence is somewhat run-on, chaining all three narrowing dimensions into one long clause, which slightly hurts scannability.

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

Completeness5/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 enumerating the returned fields (price, duration, rating, link), and it covers filtering, refinement, and the sibling alternative. Nothing an agent needs in order to call this correctly is missing.

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 baseline is 3, but the description goes beyond it: it frames minPrice/maxPrice as "from" prices per person in a filtered-narrowing context and gives provider examples ("Shore Excursions Group", "Viator") that clarify intent. The one weak spot is the awkward phrase "with its total," which is vaguer than the schema's own wording.

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

Purpose5/5

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

States a specific verb and resource ("Bookable shore excursions and resort day passes in a cruise port") and immediately names the return fields it provides (price, duration, rating, link). The final sentence explicitly distinguishes it from getSailingExcursions, so an agent can route between the two without opening either schema.

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

Usage Guidelines5/5

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

Gives concrete when-to-use guidance for each narrowing dimension (activity, minPrice/maxPrice, provider) with real examples, plus an explicit refinement protocol ("To narrow an earlier answer, call again with the same port and activity plus the price or provider"). It also names the correct alternative for a different task (getSailingExcursions for all ports of one sailing).

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.

Resources