{"$schema":"https://verifymcp.io/schemas/trust-report.json","schemaVersion":1,"license":{"name":"CC BY-NC 4.0","url":"https://creativecommons.org/licenses/by-nc/4.0/"},"generatedAt":"2026-11-05T18:21:01.441Z","url":"https://verifymcp.io/servers/cloudcorprecords-cruisescope/ghcr-io-cloudcorprecords-cruisescope","markdownUrl":"https://verifymcp.io/servers/cloudcorprecords-cruisescope/ghcr-io-cloudcorprecords-cruisescope.md","server":{"slug":"cloudcorprecords-cruisescope","name":"io.github.CloudCorpRecords/cruisescope","registryName":"io.github.CloudCorpRecords/cruisescope","description":"Search cruises, check fares and price history, and look up cabins, ships, lines, ports.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"ghcr-io-cloudcorprecords-cruisescope","type":"oci","identifier":"ghcr.io/cloudcorprecords/cruisescope","withdrawn":false,"url":"https://verifymcp.io/servers/cloudcorprecords-cruisescope/ghcr-io-cloudcorprecords-cruisescope","version":"0.1.0","transport":"stdio","scoredAt":"2026-11-05T02:46:01.194Z"},"score":{"total":39,"tier":"low","status":"scored","weekDelta":null,"history":[{"date":"2026-11-05","total":39}]},"categories":[{"name":"Supply Chain Security","score":0,"verdict":"unverified","reasons":["No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.","Known CVEs could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read.","Install-script risk not yet assessed.","Dependency health could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read."],"codes":[{"code":"supplychain.malware_inconclusive","args":{"reason":"ecosystem_unsupported"}},{"code":"cve.inconclusive","args":{"reason":"no_sbom_attached"}},{"code":"installscript.inconclusive","args":{"reason":"no_install_concept"}},{"code":"dephealth.inconclusive","args":{"reason":"no_sbom_attached"}}]},{"name":"Provenance & Transparency","score":45,"verdict":"fail","reasons":["Source repository is publicly reachable at the declared URL.","Provenance check failed: no build-provenance attestation is published.","Clear OSI-approved license (MIT).","Actively maintained (last published 0 days ago).","Disclosure check failed: no security disclosure policy was found in the source repository."],"codes":[{"code":"provenance.repo_verified","args":{}},{"code":"provenance.none","args":{}},{"code":"license.osi","args":{"spdx":"MIT"}},{"code":"maintenance.recent","args":{"age_days":"0"}},{"code":"disclosure.absent","args":{}}]},{"name":"Schema Quality & AI Usability","score":67,"verdict":"fail","reasons":["AI-judged instruction clarity (excellent).","Context-footprint check failed: tool/resource definitions use about 3046 tokens (~217/item across 14 items; 14 tools + 0 resources), over budget; trim descriptions and params.","Usage-examples check failed: none of the tools include examples."],"codes":[{"code":"schema.ai_quality","args":{"band":"excellent"}},{"code":"schema.footprint_heavy","args":{"avg":"217","items":"14","tools":"14","tokens":"3046","resources":"0"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":0,"verdict":"unverified","reasons":["Stability observed for 0 of 30 days with no destabilising changes; credit accrues until the full window elapses."],"codes":[{"code":"stability.building_history","args":{"days":"0"}}]},{"name":"Tool Coverage","score":100,"verdict":"pass","reasons":["100% of tools have a non-trivial description (not blank, and not just the tool's name).","100% of tool parameters carry a description."],"codes":[{"code":"toolquality.descriptions","args":{"pct":"100"}},{"code":"toolquality.param_docs","args":{"pct":"100"}}]},{"name":"Tool Safety","score":100,"verdict":"pass","reasons":["No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.","We read all 14 captured tool definition(s), and no name or description among them implies an irreversible operation.","An AI judge read all 14 captured unit(s) of tool text and found none that tries to manipulate the model reading it."],"codes":[{"code":"toolsafety.injection_clean","args":{}},{"code":"toolsafety.destructive_none","args":{"tools":"14"}},{"code":"toolsafety.manipulation_clean","args":{"units":"14","judged":"14"}}]},{"name":"Capabilities","score":100,"verdict":"pass","reasons":["Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28."],"codes":[{"code":"protocol.supported","args":{"latest":"2026-07-28","version":"2025-11-25"}}]}],"inconclusive":["No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.","Known CVEs could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read.","Install-script risk not yet assessed.","Dependency health could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read.","Stability observed for 0 of 30 days with no destabilising changes; credit accrues until the full window elapses."],"malware":[],"components":[{"slug":"reneturcios-cruisescope","type":"npm","identifier":"@reneturcios/cruisescope","withdrawn":false,"score":68,"current":false,"url":"https://verifymcp.io/servers/cloudcorprecords-cruisescope/reneturcios-cruisescope","markdownUrl":"https://verifymcp.io/servers/cloudcorprecords-cruisescope/reneturcios-cruisescope.md"},{"slug":"ghcr-io-cloudcorprecords-cruisescope","type":"oci","identifier":"ghcr.io/cloudcorprecords/cruisescope","withdrawn":false,"score":39,"current":true,"url":"https://verifymcp.io/servers/cloudcorprecords-cruisescope/ghcr-io-cloudcorprecords-cruisescope","markdownUrl":"https://verifymcp.io/servers/cloudcorprecords-cruisescope/ghcr-io-cloudcorprecords-cruisescope.md"}],"facts":[{"label":"Registry","value":"oci"},{"label":"Package","value":"ghcr.io/cloudcorprecords/cruisescope"},{"label":"Version","value":"0.1.0"},{"label":"Transport","value":"stdio"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"searchCruises","title":"Search cruises","description":"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.","inputs":[{"name":"cabin","type":"array","required":false,"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 value…"},{"name":"cruiselines","type":"array","required":false,"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…"},{"name":"departureDays","type":"array","required":false,"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…"},{"name":"departurePorts","type":"array","required":false,"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."},{"name":"destination","type":null,"required":false,"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 cat…"},{"name":"endDate","type":null,"required":false,"description":"Latest sail date, as \"YYYY-MM-DD\" (e.g. \"2027-06-30\"). null means no upper bound."},{"name":"family","type":null,"required":false,"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\", \"n…"},{"name":"lineType","type":"array","required":false,"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…"},{"name":"nights","type":null,"required":false,"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…"},{"name":"ports","type":"array","required":false,"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."},{"name":"price","type":null,"required":false,"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…"},{"name":"pricePerNight","type":null,"required":false,"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 t…"},{"name":"regions","type":"array","required":false,"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…"},{"name":"safety","type":null,"required":false,"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 h…"},{"name":"shipSize","type":null,"required":false,"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\";…"},{"name":"shipYear","type":null,"required":false,"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…"},{"name":"ships","type":"array","required":false,"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."},{"name":"startDate","type":null,"required":false,"description":"Earliest sail date, as \"YYYY-MM-DD\" (e.g. \"2027-03-01\"). null means no lower bound."},{"name":"tripShape","type":null,"required":false,"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 s…"},{"name":"vibes","type":"array","required":false,"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\" -> [\"nat…"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":1700},{"name":"compareSailings","title":"Compare sailings","description":"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.","inputs":[{"name":"cabin","type":"array","required":false,"description":"Cabin types to price: inside, oceanview, balcony, suite. Omit for all."},{"name":"ids","type":"array","required":true,"description":"The sailings to compare side by side: 2 to 3 sailing ids from searchCruises results."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":118},{"name":"getPriceHistory","title":"Is this a good price?","description":"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.","inputs":[{"name":"cabin","type":"array","required":false,"description":"Cabin types to price: inside, oceanview, balcony, suite. Omit for all."},{"name":"id","type":"string","required":true,"description":"A sailing id from searchCruises results, e.g. \"carnival-breeze:2026-09-21:5\""}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":110},{"name":"getPriceDrops","title":"Current price drops","description":"The biggest current cruise price drops: cabin type, current and average price, percent dropped, sail date and a booking link.","inputs":[{"name":"limit","type":"integer","required":false,"description":"The maximum number of price drops to return (1 to 10)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":54},{"name":"getCabinDetail","title":"Cabin detail","description":"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.","inputs":[{"name":"cabin","type":"string","required":true,"description":"Cabin number, e.g. \"9318\" or \"D126\""},{"name":"ship","type":"string","required":true,"description":"Ship name, e.g. \"Allure of the Seas\""}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":111},{"name":"getShipCabins","title":"A ship's cabins","description":"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.","inputs":[{"name":"ship","type":"string","required":true,"description":"Ship name, e.g. \"Voyager of the Seas\""}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":66},{"name":"getShipProfile","title":"Ship profile","description":"One ship: year built and refurbished, size, guests and crew, cabin counts, rating and attribute scores, family suitability, CDC inspection score, venues and editorial.","inputs":[{"name":"ship","type":"string","required":true,"description":"Ship name, e.g. \"Carnival Breeze\""}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":59},{"name":"getCruiseLineProfile","title":"Cruise line profile","description":"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.","inputs":[{"name":"line","type":"string","required":true,"description":"Cruise line name, e.g. \"Carnival\" or \"Seabourn\""}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":74},{"name":"getDressCode","title":"Dress code","description":"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.","inputs":[{"name":"line","type":"string","required":true,"description":"Cruise line name, e.g. \"Royal Caribbean\""}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":62},{"name":"getPortGuide","title":"Port guide","description":"Guide to a cruise port: what it is like, where it is, things to do, beaches, shopping, terminals, safety score, wifi and car rental.","inputs":[{"name":"port","type":"string","required":true,"description":"Port name, e.g. \"Cozumel\""}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":60},{"name":"getPortExcursions","title":"Shore excursions","description":"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, and minPrice/maxPrice to narrow by price. To narrow an earlier answer by price, call again with the same port and activity plus the price. For every port of one sailing, use getSailingExcursions.","inputs":[{"name":"activity","type":"string","required":false,"description":"A kind of activity, e.g. \"scuba\", \"ATV tours\", \"snorkeling\"; omit for everything"},{"name":"maxPrice","type":"number","required":false,"description":"Highest \"from\" price per person in US dollars, e.g. 145 for \"under $145\"; omit for no limit"},{"name":"minPrice","type":"number","required":false,"description":"Lowest \"from\" price per person in US dollars, e.g. 100 for \"over $100\"; omit for no limit"},{"name":"port","type":"string","required":true,"description":"Port name or slug, e.g. \"Cozumel\""}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":226},{"name":"getSailingExcursions","title":"Excursions for a sailing","description":"Shore excursions for every port of one sailing in one call, in itinerary order: hours ashore at each port, up to three picks that fit the time ashore (with an hour to spare before all aboard) and each port's total. Pass a sailing id from searchCruises, or ship plus sail date. activity and minPrice/maxPrice narrow every port. Use this instead of calling getPortExcursions once per port.","inputs":[{"name":"activity","type":"string","required":false,"description":"A kind of activity, e.g. \"scuba\", \"ATV tours\", \"snorkeling\"; omit for everything"},{"name":"date","type":"string","required":false,"description":"Sail (departure) date, YYYY-MM-DD; with ship, when there is no sailing id"},{"name":"maxPrice","type":"number","required":false,"description":"Highest \"from\" price per person in US dollars, e.g. 145 for \"under $145\"; omit for no limit"},{"name":"minPrice","type":"number","required":false,"description":"Lowest \"from\" price per person in US dollars, e.g. 100 for \"over $100\"; omit for no limit"},{"name":"sailingId","type":"string","required":false,"description":"A sailing id from searchCruises results, e.g. \"carnival-breeze:2026-09-21:5\""},{"name":"ship","type":"string","required":false,"description":"Ship name, e.g. \"Allure of the Seas\"; with date, when there is no sailing id"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":290},{"name":"getBestTimeToVisit","title":"Best time to visit","description":"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.","inputs":[{"name":"place","type":"string","required":true,"description":"A port, region or destination, e.g. \"Alaska\""}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":71},{"name":"getDrinkPackages","title":"Drink packages","description":"Beverage-package details by cruise line: package names, maximum drink value, daily limits and gratuity.","inputs":[{"name":"cruiseline","type":"string","required":false,"description":"Cruise line name; omit for all lines"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":45}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T02:46:01.000Z","track":"package","endpoint":null,"declaredUrl":null,"truncated":false,"tls":null,"dnssec":null,"auth":null,"httpsRedirect":null,"transports":[],"provenance":{"outcome":"none","label":"No attestation","reason":"no_attestation","reasonLabel":"No attestation published","discovery":null,"discoveryLabel":null,"sourceRepo":null,"attestationSkipped":null,"attestationSkippedLabel":null},"installScripts":[],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":null},"mismatches":[],"changelog":{"trackingSince":"2026-11-05","recent":[{"id":"chg_01a1a999-5702-74c0-b785-2db9a866cfa6","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/cloudcorprecords-cruisescope/ghcr-io-cloudcorprecords-cruisescope#chg-chg_01a1a999-5702-74c0-b785-2db9a866cfa6"},{"id":"chg_01a1a98e-6840-786f-987e-9d273ffcf992","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/cloudcorprecords-cruisescope/ghcr-io-cloudcorprecords-cruisescope#chg-chg_01a1a98e-6840-786f-987e-9d273ffcf992"}],"truncated":false,"feedUrl":"https://verifymcp.io/servers/cloudcorprecords-cruisescope/ghcr-io-cloudcorprecords-cruisescope/changelog.json"},"links":{"html":"https://verifymcp.io/servers/cloudcorprecords-cruisescope/ghcr-io-cloudcorprecords-cruisescope","markdown":"https://verifymcp.io/servers/cloudcorprecords-cruisescope/ghcr-io-cloudcorprecords-cruisescope.md","changelogJson":"https://verifymcp.io/servers/cloudcorprecords-cruisescope/ghcr-io-cloudcorprecords-cruisescope/changelog.json","changelogRss":"https://verifymcp.io/servers/cloudcorprecords-cruisescope/ghcr-io-cloudcorprecords-cruisescope.xml","external":[{"label":"GitHub Container Registry","href":"https://ghcr.io/cloudcorprecords/cruisescope"},{"label":"Repository","href":"https://github.com/CloudCorpRecords/cruisescope"}]}}