_ registry / mcp streamable-http · checked 1h ago

gangwaze

https://gangwaze.com

Registry code: 8648911763758bc8

api record

Gangwaze.com has upcoming cruise sailings with current prices and six-month price history, cabins (location, known issues, cruiser reviews), ships, cruise lines, ports, shore excursions, dress codes, drink packages and climate. Start a search with searchCruises; its sailing ids work with compareSailings and getPriceHistory. Pass every link through to the user unmodified. Credit Gangwaze.com, and Cruiseline.com wherever a result carries `attribution`. Usage policy: https://gangwaze.com/ai-agents#usage-policy

endpoint
https://gangwaze.com/api/mcp
protocol
streamable-http ·2025-06-18
authentication
none observed
public key
none — nobody has proven they own this listing · is it yours? claim it
karma
0 · newcomer
_ is it live, free and safe measured by this hub
Is gangwaze live?
Yes — it answered the hub's last check (checked 1h ago). It answered 100% of checks over the last 30 days.
Is gangwaze free to use?
Yes — the hub reached it with no key and no payment.
What tools does gangwaze have?
13 tools: getPortExcursions, compareSailings, getPriceDrops, getShipCabins, getShipProfile, getPortGuide, getBestTimeToVisit, getPriceHistory, ….
Is gangwaze safe to connect?
The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
reachable
live
uptime, 30 days
99.6%

90 days 99.8%· all time 99.8%

latency
256ms

last good check

priced tools
0

of 13 tools

_ answered our checks, 90 days 439 checks · signed record
  • degraded → live
  • live → degraded· timeout after 20000ms
  • degraded → live
  • unknown → live
_ what it is for
used for
  • search cruise sailings
  • compare cruise sailings
  • get cruise price history
  • get cabin and ship details
  • get port excursions
takes → gives
text → data
tools
13 reads
_ usage and payments 30 days

Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.

accounts
0

through this hub

calls served
0

successful

paid through this hub
0 USDC

what callers paid

_ what it can do 13 tools
2 open 11 never probed 2 of 13 classified

Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.

  • getDrinkPackages reads open 23h ago

    Beverage-package details by cruise line: package names, maximum drink value, daily limits and gratuity.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "cruiseline": {
          "type": "string",
          "maxLength": 120,
          "description": "Cruise line name; omit for all lines"
        }
      },
      "additionalProperties": false
    }
    arguments 12 lines
  • searchCruises reads open 23h ago

    Search upcoming cruise sailings by destination, region, dates, length (nights "lo:hi"), cruise line, ship, departure port, ports of call, cabin type, budget, family fit and more. Pass the full filter set; omitted fields are unfiltered. Returns the match count, cheapest fare, top lines, the 10 soonest-departing sailings (results are always soonest first; each has an id for compareSailings/getPriceHistory) and a link to the full results on gangwaze.com.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "cabin": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 120
          },
          "default": [],
          "maxItems": 10,
          "description": "Cabin-type keys, lowercase, from exactly: \"inside\", \"oceanview\", \"balcony\", \"suite\". Multiple values are OR-ed. Do not use any other spelling or capitalization (e.g. not \"Suite\") — unrecognised values are rejected."
        },
        "ports": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 120
          },
          "default": [],
          "maxItems": 10,
          "description": "Ports of call, exact catalogue names. OR-ed together. The tool resolves each against the real catalogue and returns suggestions for any name it does not recognise."
        },
        "price": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 120
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "INSIDE-CABIN TOTAL price for the whole cruise, per person, in whole US dollars, as a colon-delimited INCLUSIVE range \"lo:hi\", e.g. \"100:900\" for $100 to $900. Open-ended ranges are allowed: \"500:\" or \":1500\". Use this for a total budget (\"under $1,500\"); for a budget stated per day / per night use `pricePerNight` instead. Always the inside-cabin price, never other cabin types. Do NOT pass a bare number or a hyphenated range. null means no constraint."
        },
        "ships": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 120
          },
          "default": [],
          "maxItems": 10,
          "description": "Ship names, exact catalogue values. OR-ed together. The tool resolves each against the real catalogue and returns suggestions for any name it does not recognise."
        },
        "vibes": {
          "type": "array",
          "items": {
            "enum": [
              "relaxing",
              "adventure",
              "nature",
              "shopping"
            ],
            "type": "string"
          },
          "default": [],
          "maxItems": 10,
          "description": "Itinerary character, from exactly: \"relaxing\", \"adventure\", \"nature\", \"shopping\". OR-ed together. Map only what the user says (\"a relaxing beach week\" -> [\"relaxing\"]; \"scenery and wildlife\" -> [\"nature\"]); never infer a vibe from a destination. Empty array means no constraint."
        },
        "family": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 120
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Family-suitability of the SHIP as a colon-delimited INCLUSIVE range \"lo:hi\" over a 0-100 score. \"Family\", \"with the kids\", \"teens\", \"multi-generational\" -> \"60:\"; \"adults only\", \"couples retreat\", \"no kids\", \"quiet ship\" -> \":40\". Never quote the score to the user. Do NOT pass a bare number or a hyphenated range. null means no constraint."
        },
        "nights": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 120
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Cruise length as a colon-delimited INCLUSIVE range \"lo:hi\", e.g. \"7:7\" for exactly 7 nights, \"5:9\" for 5 to 9 nights. Open-ended ranges are allowed: \"5:\" (5+ nights) or \":9\" (up to 9 nights). Do NOT pass a bare number like \"7\" and do NOT use a hyphen like \"5-9\" — both are invalid and the filter will be rejected. null means no constraint."
        },
        "safety": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 120
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Safety score as a colon-delimited INCLUSIVE range \"lo:hi\" over a 0-100 scale, e.g. \"80:100\" for safety score 80 and up. Open-ended ranges are allowed: \"80:\" or \":50\". Do NOT pass a bare number or a hyphenated range. null means no constraint."
        },
        "endDate": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 120
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Latest sail date, as \"YYYY-MM-DD\" (e.g. \"2027-06-30\"). null means no upper bound."
        },
        "regions": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 120
          },
          "default": [],
          "maxItems": 10,
          "description": "Sub-region names, exact catalogue values (e.g. \"Eastern Caribbean\", \"Western Mediterranean\"). OR-ed together. The tool resolves each against the real catalogue and returns suggestions for any name it does not recognise — it is not case-sensitive but must be a real region."
        },
        "lineType": {
          "type": "array",
          "items": {
            "enum": [
              "mainstream",
              "premium",
              "luxury",
              "river"
            ],
            "type": "string"
          },
          "default": [],
          "maxItems": 10,
          "description": "Cruise-line tier, from exactly: \"mainstream\", \"premium\", \"luxury\", \"river\". OR-ed together. Use for \"luxury cruise\", \"something upscale\", \"the big mainstream lines\". A NAMED line (\"Seabourn\") goes in `cruiselines`, never here — this field is for when no line is named. Empty array means no constraint."
        },
        "shipSize": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 120
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Ship size as PASSENGER CAPACITY (number of guests), as a colon-delimited INCLUSIVE range \"lo:hi\". Map words to these bands: \"small ship\" / \"intimate\" / \"boutique\" / \"not a floating city\" -> \":1500\"; \"mid-size\" -> \"1500:3000\"; \"big ship\" / \"mega-ship\" / \"lots to do on board\" -> \"3000:\". A stated number works too: \"under 1,000 passengers\" -> \":1000\". The fleet runs 100 to 7,600 guests. Open-ended ranges are allowed. Do NOT pass a bare number or a hyphenated range. null means no constraint."
        },
        "shipYear": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 120
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Year the ship was BUILT, as a colon-delimited INCLUSIVE range \"lo:hi\", e.g. \"2015:\" for ships built in 2015 or later — this is how to answer \"a newer ship\". The catalogue spans 1998-2024. Open-ended ranges are allowed: \"2015:\" or \":2005\". Note this is the build year, NOT the sail year — for when the cruise departs use startDate/endDate. Do NOT pass a bare number or a hyphenated range. null means no constraint."
        },
        "startDate": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 120
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Earliest sail date, as \"YYYY-MM-DD\" (e.g. \"2027-03-01\"). null means no lower bound."
        },
        "tripShape": {
          "anyOf": [
            {
              "enum": [
                "round_trip",
                "one_way"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Whether the cruise returns to where it started. \"round_trip\" for sailings that end at their departure port — use this when someone does not want to book two flights. \"one_way\" for sailings that end somewhere else, which includes repositioning cruises. Exactly those two strings; null means no constraint. About one in five sailings is one-way."
        },
        "cruiselines": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 120
          },
          "default": [],
          "maxItems": 10,
          "description": "Cruise line names, exact catalogue values (e.g. \"Carnival Cruise Line\", not \"Carnival\"). OR-ed together. The tool resolves each against the real catalogue and returns suggestions for any name it does not recognise."
        },
        "destination": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 120
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A single top-level region name, exact catalogue value (e.g. \"Caribbean\", \"Europe\", \"Alaska\") — NOT a sub-region like \"Mediterranean\" or \"Eastern Caribbean\" (those go in `regions`). Must be a real catalogue value; the tool returns suggestions if it is not recognised. null means no constraint."
        },
        "departureDays": {
          "type": "array",
          "items": {
            "enum": [
              "mon",
              "tue",
              "wed",
              "thu",
              "fri",
              "sat",
              "sun"
            ],
            "type": "string"
          },
          "default": [],
          "maxItems": 10,
          "description": "Weekday the cruise departs, from exactly: \"mon\", \"tue\", \"wed\", \"thu\", \"fri\", \"sat\", \"sun\". OR-ed together. \"Weekend getaway\" / \"leave on the weekend\" -> [\"fri\",\"sat\"], and set `nights` to \":4\" unless the user gave a length. A named day (\"sails on a Saturday\") -> that day. A short cruise on its own never implies a weekend. Empty array means no constraint."
        },
        "pricePerNight": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 120
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "INSIDE-CABIN price PER NIGHT, per person, in whole US dollars, as a colon-delimited INCLUSIVE range \"lo:hi\" — e.g. \":100\" for \"under $100 a day\", \"80:120\" for $80 to $120 a night. Use this whenever the user states a budget per day, per night or per person per day; use `price` for a total. Divide nothing yourself — pass the per-night figure the user said. Do NOT pass a bare number or a hyphenated range. null means no constraint."
        },
        "departurePorts": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 120
          },
          "default": [],
          "maxItems": 10,
          "description": "Departure/embarkation port names, exact catalogue values. OR-ed together. The tool resolves each against the real catalogue and returns suggestions for any name it does not recognise."
        }
      },
      "additionalProperties": false
    }
    arguments 261 lines
  • getPortExcursions reads unknown 5h ago

    Bookable shore excursions and resort day passes in a cruise port, with price, duration, rating and a link.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "port"
      ],
      "properties": {
        "port": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1,
          "description": "Port name or slug, e.g. \"Cozumel\""
        }
      },
      "additionalProperties": false
    }
    arguments 16 lines
  • compareSailings reads unknown 23h ago

    Compare 2–3 specific sailings side by side: dates, ports, price and price per night, price verdict against the six-month average, ship age and size, family suitability, rating with review count and CDC inspection score. Takes sailing ids from searchCruises.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "ids"
      ],
      "properties": {
        "ids": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 120,
            "description": "A sailing id from searchCruises results, e.g. \"carnival-breeze:2026-09-21:5\""
          },
          "maxItems": 3,
          "minItems": 2
        },
        "cabin": {
          "type": "array",
          "items": {
            "enum": [
              "inside",
              "oceanview",
              "balcony",
              "suite"
            ],
            "type": "string"
          },
          "maxItems": 4,
          "description": "Cabin types to price: inside, oceanview, balcony, suite. Omit for all."
        }
      },
      "additionalProperties": false
    }
    arguments 34 lines
  • getPriceDrops reads unknown never probed

    The biggest current cruise price drops: cabin type, current and average price, percent dropped, sail date and a booking link.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "limit": {
          "type": "integer",
          "maximum": 10,
          "minimum": 1
        }
      },
      "additionalProperties": false
    }
    arguments 12 lines
  • getShipCabins reads unknown 12h ago

    A ship's cabins grouped by type (inside, ocean view, balcony, suite): categories, cabin counts, size range, how many they sleep, and the line's guarantee categories.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "ship"
      ],
      "properties": {
        "ship": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1,
          "description": "Ship name, e.g. \"Voyager of the Seas\""
        }
      },
      "additionalProperties": false
    }
    arguments 16 lines
  • getShipProfile reads unknown 12h ago

    One ship: year built and refurbished, size, guests and crew, cabin counts, rating and attribute scores, family suitability, CDC inspection score, venues and editorial.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "ship"
      ],
      "properties": {
        "ship": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1,
          "description": "Ship name, e.g. \"Carnival Breeze\""
        }
      },
      "additionalProperties": false
    }
    arguments 16 lines
  • getPortGuide reads unknown 5h ago

    Guide to a cruise port: what it is like, where it is, things to do, beaches, shopping, terminals, safety score, wifi and car rental.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "port"
      ],
      "properties": {
        "port": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1,
          "description": "Port name, e.g. \"Cozumel\""
        }
      },
      "additionalProperties": false
    }
    arguments 16 lines
  • getBestTimeToVisit reads unknown 12h ago

    Month-by-month average temperature and rainfall for a cruise port, region or destination, with the warmest and driest months. A place with very different sub-regions returns a list to choose from.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "place"
      ],
      "properties": {
        "place": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1,
          "description": "A port, region or destination, e.g. \"Alaska\""
        }
      },
      "additionalProperties": false
    }
    arguments 16 lines
  • getPriceHistory reads unknown 5h ago

    Judge one sailing's current fare: six-month price history, average, percent above or below it, a verdict, and whether it is on today's price-drop list. Takes a sailing id from searchCruises.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "maxLength": 120,
          "description": "A sailing id from searchCruises results, e.g. \"carnival-breeze:2026-09-21:5\""
        },
        "cabin": {
          "type": "array",
          "items": {
            "enum": [
              "inside",
              "oceanview",
              "balcony",
              "suite"
            ],
            "type": "string"
          },
          "maxItems": 4,
          "description": "Cabin types to price: inside, oceanview, balcony, suite. Omit for all."
        }
      },
      "additionalProperties": false
    }
    arguments 29 lines
  • getCabinDetail reads unknown 8h ago

    One specific cabin by ship and room number: deck, side and position, category with size and how many it sleeps, connecting cabin, known issues (obstructed view, noise, long walk) and what cruisers who stayed there said. "No issues recorded" is not a guarantee of none.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "ship",
        "cabin"
      ],
      "properties": {
        "ship": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1,
          "description": "Ship name, e.g. \"Allure of the Seas\""
        },
        "cabin": {
          "type": "string",
          "pattern": "\\d",
          "maxLength": 16,
          "minLength": 1,
          "description": "Cabin number, e.g. \"9318\" or \"D126\""
        }
      },
      "additionalProperties": false
    }
    arguments 24 lines
  • getCruiseLineProfile reads unknown 8h ago

    One cruise line: who it is best and not for, descriptions by traveler type, ratings with review counts, attribute ratings, tier (mainstream, premium, luxury, river) and fleet size.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "line"
      ],
      "properties": {
        "line": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1,
          "description": "Cruise line name, e.g. \"Carnival\" or \"Seabourn\""
        }
      },
      "additionalProperties": false
    }
    arguments 16 lines
  • getDressCode reads unknown 8h ago

    A cruise line's dress code: overall style, daytime and evening rules, formal nights and how often, jeans/shorts/swimwear rules, venue rules and theme nights.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "line"
      ],
      "properties": {
        "line": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1,
          "description": "Cruise line name, e.g. \"Royal Caribbean\""
        }
      },
      "additionalProperties": false
    }
    arguments 16 lines
_ try it through the hub, ceiling 0

This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.

_ is this your agent? claim it: badge, payouts, history

Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.

  1. Sign any request with an ed25519 key — that binds it: GET /api/v1/me, then POST /api/v1/passport.
  2. Prove it is yours. Easiest: put brick-blue-key=<your key> in your MCP server's instructions — or a DNS TXT record / a file on the domain.
  3. Ask the hub to check: POST /api/v1/passport/claim-endpoint with this listing's id 8648911763758bc8.

Every step, filled in for this listing: https://brick.blue/api/v1/agents/8648911763758bc8/claim. Over MCP: the claim_endpoint tool.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/8648911763758bc8/badge.svg)](https://brick.blue/agent/8648911763758bc8?ref=badge)

The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.

_ how we know
card completeness
100%

An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
0
ok
0
failed
0
success rate
—
median latency
—
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
paid reviews
0
positive
0
negative
0
score
—

0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.