{"$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-05T15:54:29.966Z","url":"https://verifymcp.io/servers/io-shiptrail-shiptrail/shiptrail","markdownUrl":"https://verifymcp.io/servers/io-shiptrail-shiptrail/shiptrail.md","server":{"slug":"io-shiptrail-shiptrail","name":"Shiptrail","registryName":"io.shiptrail/shiptrail","description":"Free live AIS ship tracking: find any ship by name, MMSI or IMO, and see who is arriving at a port.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"shiptrail","type":"remote","identifier":"https://shiptrail.io/mcp","withdrawn":false,"url":"https://verifymcp.io/servers/io-shiptrail-shiptrail/shiptrail","version":"1.0.2","transport":null,"scoredAt":"2026-11-05T00:06:53.759Z"},"score":{"total":73,"tier":"medium","status":"scored","weekDelta":null,"history":[{"date":"2026-11-05","total":73},{"date":"2026-11-04","total":73}]},"categories":[{"name":"Endpoint Security","score":80,"verdict":"fail","reasons":["The endpoint's TLS certificate is valid, in date, and uses a strong key.","No authorisation is required to call this server. Nothing on it is marked destructive, but we can't show that an anonymous caller can only read: full credit needs the server to list at least one tool and every tool to be verifiably read-only. We use a best-effort check of tool names and descriptions to tell read-only tools from tools that change things, so some genuinely read-only tools may not get full credit. Names that start with a read verb (get, list, read, search and similar) and accurate readOnlyHint annotations help. Meet that to earn full credit, or require authorisation.","HTTPS is enforced; there's no plaintext access path.","The HSTS (Strict-Transport-Security) header is present.","DNSSEC check failed: this domain isn't protected by DNSSEC."],"codes":[{"code":"tls.valid","args":{}},{"code":"auth.none_no_destructive","args":{}},{"code":"https.enforced","args":{}},{"code":"headers.hsts_present","args":{}},{"code":"dnssec.absent","args":{}}]},{"name":"Transport & Reachability","score":100,"verdict":"pass","reasons":["Verified streamable-http transport via a live MCP handshake."],"codes":[{"code":"transport.verified","args":{"transport":"streamable-http"}}]},{"name":"Schema Quality & AI Usability","score":72,"verdict":"fail","reasons":["AI-judged instruction clarity (good).","Context-footprint check failed: tool/resource definitions use about 608 tokens (~152/item across 4 items; 4 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":"good"}},{"code":"schema.footprint_heavy","args":{"avg":"152","items":"4","tools":"4","tokens":"608","resources":"0"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":3,"verdict":"partial","reasons":["Stability observed for 1 of 30 days with no destabilising changes; credit accrues until the full window elapses."],"codes":[{"code":"stability.building_history","args":{"days":"1"}}]},{"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.","Structured output schemas are declared (100% of tools); any adoption earns full credit."],"codes":[{"code":"toolquality.descriptions","args":{"pct":"100"}},{"code":"toolquality.param_docs","args":{"pct":"100"}},{"code":"toolquality.output_present","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 4 captured tool definition(s), and no name or description among them implies an irreversible operation.","An AI judge read all 5 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":"4"}},{"code":"toolsafety.manipulation_clean","args":{"units":"5","judged":"5"}}]},{"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":[],"malware":[],"components":[{"slug":"shiptrail","type":"remote","identifier":"https://shiptrail.io/mcp","withdrawn":false,"score":73,"current":true,"url":"https://verifymcp.io/servers/io-shiptrail-shiptrail/shiptrail","markdownUrl":"https://verifymcp.io/servers/io-shiptrail-shiptrail/shiptrail.md"}],"facts":[{"label":"Endpoint","value":"https://shiptrail.io/mcp"},{"label":"Transports","value":"streamable-http"},{"label":"Auth","value":"none"},{"label":"Version","value":"1.0.2"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"search_ships","title":"Search ships","description":"Find ships by name, MMSI (9 digits) or IMO number (7 digits): every ship with a Shiptrail page, any class, on the map now or heard in the last year. Ships on the map now come first. Use get_ship with an MMSI for the whole record.","inputs":[{"name":"limit","type":"integer","required":false,"description":"At most this many ships."},{"name":"query","type":"string","required":true,"description":"A ship's name or part of it, an MMSI or an IMO number."}],"outputs":[{"name":"note","type":"string","required":false,"description":"Why the list may be short."},{"name":"query","type":"string","required":true,"description":null},{"name":"ships","type":"array","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":104},{"name":"get_ship","title":"Get a ship","description":"Everything Shiptrail's page shows about one ship, by MMSI: identity, size, position, speed, course and status, destination and ETA, where she came from, recent port calls, particulars and registry facts, photo and its credit, a Wikipedia summary, and, with includeNearby, the ships near her. No history over time.","inputs":[{"name":"includeNearby","type":"boolean","required":false,"description":"Also list the ships near her. Off by default; leave it off unless the question is about her surroundings."},{"name":"mmsi","type":"integer","required":true,"description":"Her MMSI, 9 digits."}],"outputs":[{"name":"aisClass","type":"string","required":false,"description":null},{"name":"beamM","type":"number","required":false,"description":null},{"name":"callSign","type":"string","required":false,"description":null},{"name":"dossier","type":"string","required":false,"description":"pending: her particulars and photo are still being looked up; ask again in a minute."},{"name":"draughtM","type":"number","required":false,"description":null},{"name":"flag","type":"string","required":false,"description":null},{"name":"imo","type":"integer","required":false,"description":null},{"name":"kind","type":"string","required":false,"description":"The map's class for her AIS type."},{"name":"lastHeard","type":"string","required":false,"description":"Her last position report."},{"name":"lengthM","type":"number","required":false,"description":null},{"name":"mmsi","type":"integer","required":true,"description":null},{"name":"name","type":"string","required":true,"description":null},{"name":"nearby","type":"array","required":false,"description":null},{"name":"onMap","type":"boolean","required":true,"description":null},{"name":"particulars","type":"object","required":false,"description":"From Wikidata and the US Coast Guard, where they know her."},{"name":"photo","type":"object","required":false,"description":null},{"name":"position","type":"object","required":false,"description":"Where she is, as she last broadcast it. For a ship off the map, where she was last heard."},{"name":"recentCalls","type":"array","required":false,"description":null},{"name":"sharesImoWith","type":"array","required":false,"description":"Other MMSIs heard with her IMO number."},{"name":"type","type":"string","required":false,"description":null},{"name":"url","type":"string","required":true,"description":"Her page, or the port's, on shiptrail.io."},{"name":"voyage","type":"object","required":false,"description":null},{"name":"wikipedia","type":"object","required":false,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":122},{"name":"search_ports","title":"Search ports","description":"Find ports by name or UN/LOCODE. Busy ports come first, with how many ships are in port, en route and lately departed. Use get_port with a UN/LOCODE for its boards.","inputs":[{"name":"limit","type":"integer","required":false,"description":"At most this many ports."},{"name":"query","type":"string","required":true,"description":"A port's name or part of it, or its UN/LOCODE."}],"outputs":[{"name":"ports","type":"array","required":true,"description":null},{"name":"query","type":"string","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":84},{"name":"get_port","title":"Get a port","description":"A port's Arrivals board (ships in port now, then ships en route by ETA) and Departures board (ships that left in the last 48 hours), as its Shiptrail page shows them, by UN/LOCODE. Each row carries the ship's MMSI for get_ship.","inputs":[{"name":"limit","type":"integer","required":false,"description":"At most this many rows on each list; the counts are always whole."},{"name":"locode","type":"string","required":true,"description":"The port's UN/LOCODE, such as USHNL."}],"outputs":[{"name":"arrivals","type":"object","required":true,"description":null},{"name":"counts","type":"object","required":true,"description":null},{"name":"departures","type":"array","required":true,"description":null},{"name":"port","type":"object","required":true,"description":null},{"name":"truncated","type":"boolean","required":false,"description":"True when a list was cut to the limit."},{"name":"url","type":"string","required":true,"description":"Her page, or the port's, on shiptrail.io."}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":110}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T00:06:53.000Z","track":"remote","endpoint":"https://shiptrail.io/mcp","declaredUrl":null,"truncated":false,"tls":{"outcome":"valid","label":"Valid","version":"TLS 1.3","cipherSuite":"TLS_AES_128_GCM_SHA256","chainError":null,"certificates":[{"subject":"CN=shiptrail.io","issuer":"CN=WE1,O=Google Trust Services,C=US","notBefore":"2026-10-29T14:20:49Z","notAfter":"2027-01-27T15:20:45Z","keyType":"ECDSA","keyBits":256,"isCa":false},{"subject":"CN=WE1,O=Google Trust Services,C=US","issuer":"CN=GTS Root R4,O=Google Trust Services LLC,C=US","notBefore":"2023-12-13T09:00:00Z","notAfter":"2029-02-20T14:00:00Z","keyType":"ECDSA","keyBits":256,"isCa":true},{"subject":"CN=GTS Root R4,O=Google Trust Services LLC,C=US","issuer":"CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE","notBefore":"2023-11-15T03:43:21Z","notAfter":"2028-01-28T00:00:42Z","keyType":"ECDSA","keyBits":384,"isCa":true}]},"dnssec":{"result":"insecure","label":"Not signed","name":"shiptrail.io.","steps":[{"zone":".","outcome":"verified","label":"Verified"},{"zone":"io.","outcome":"verified","label":"Verified"},{"zone":"shiptrail.io.","outcome":"insecure_proven","label":"Unsigned (proven)"}]},"auth":{"outcome":"none","label":"No authorisation required","gate":null,"gateLabel":null,"status":200,"authorizationServers":[]},"httpsRedirect":{"outcome":"https_enforced","label":"HTTPS enforced","status":301},"transports":[{"transport":"streamable-http","outcome":"verified","label":"Verified","status":200,"followed":false}],"provenance":null,"installScripts":[],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":null},"mismatches":[],"changelog":{"trackingSince":"2026-11-04","recent":[{"id":"chg_01a1a907-a87b-7c97-8cf4-d931ac4b87eb","kind":"check.reverified","summary":"Stability (unverified → 0.03)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/io-shiptrail-shiptrail/shiptrail#chg-chg_01a1a907-a87b-7c97-8cf4-d931ac4b87eb"},{"id":"chg_01a1a907-a87c-79c6-84b4-8114c18518c7","kind":"tool.description_changed","summary":"Tool “get_ship” rewrote its description, which is the text the model reads","materiality":"security","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/io-shiptrail-shiptrail/shiptrail#chg-chg_01a1a907-a87c-79c6-84b4-8114c18518c7"},{"id":"chg_01a1a907-a87e-743e-af17-abf384dd3bf1","kind":"param.added_optional","summary":"“get_ship” added an optional parameter “includeNearby”","materiality":"cosmetic","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/io-shiptrail-shiptrail/shiptrail#chg-chg_01a1a907-a87e-743e-af17-abf384dd3bf1"},{"id":"chg_01a1a7b8-63a4-79ff-8442-9f77c87b086e","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-04","url":"https://verifymcp.io/servers/io-shiptrail-shiptrail/shiptrail#chg-chg_01a1a7b8-63a4-79ff-8442-9f77c87b086e"}],"truncated":false,"feedUrl":"https://verifymcp.io/servers/io-shiptrail-shiptrail/shiptrail/changelog.json"},"links":{"html":"https://verifymcp.io/servers/io-shiptrail-shiptrail/shiptrail","markdown":"https://verifymcp.io/servers/io-shiptrail-shiptrail/shiptrail.md","changelogJson":"https://verifymcp.io/servers/io-shiptrail-shiptrail/shiptrail/changelog.json","changelogRss":"https://verifymcp.io/servers/io-shiptrail-shiptrail/shiptrail.xml","external":[{"label":"Remote endpoint","href":"https://shiptrail.io/mcp"},{"label":"Website","href":"https://shiptrail.io/agents"}]}}