{"$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-05T17:42:15.278Z","url":"https://verifymcp.io/servers/pipeworx-io-imf-portwatch/pipeworx-mcp-imf-portwatch","markdownUrl":"https://verifymcp.io/servers/pipeworx-io-imf-portwatch/pipeworx-mcp-imf-portwatch.md","server":{"slug":"pipeworx-io-imf-portwatch","name":"Imf Portwatch","registryName":"io.github.pipeworx-io/imf-portwatch","description":"IMF PortWatch MCP — global maritime trade & chokepoint signals (free, no auth)","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"pipeworx-mcp-imf-portwatch","type":"npm","identifier":"@pipeworx/mcp-imf-portwatch","withdrawn":false,"url":"https://verifymcp.io/servers/pipeworx-io-imf-portwatch/pipeworx-mcp-imf-portwatch","version":"0.2.2","transport":"stdio","scoredAt":"2026-11-05T08:43:56.088Z"},"score":{"total":82,"tier":"high trust","status":"scored","weekDelta":3,"history":[{"date":"2026-11-05","total":82},{"date":"2026-11-04","total":82},{"date":"2026-11-03","total":81},{"date":"2026-11-02","total":66},{"date":"2026-11-01","total":80},{"date":"2026-10-31","total":80},{"date":"2026-10-30","total":64},{"date":"2026-10-29","total":79}]},"categories":[{"name":"Supply Chain Security","score":100,"verdict":"pass","reasons":["No malware found by supply-chain analysis.","No known CVEs affecting this package version or its production dependencies.","No install/post-install scripts declared.","No production dependencies, so there is no dependency health to assess."],"codes":[{"code":"supplychain.malware_clean","args":{}},{"code":"cve.none","args":{}},{"code":"installscript.none","args":{}},{"code":"dephealth.no_dependencies","args":{"deps":"0","unhealthy":"0"}}]},{"name":"Provenance & Transparency","score":97,"verdict":"unverified","reasons":["Source repository is publicly reachable at the declared URL.","Cryptographically verified build provenance (signed, bound to pipeworx-io/mcp-imf-portwatch).","Clear OSI-approved license (MIT).","Actively maintained (last published 3 days ago).","Security-disclosure policy not yet verified: we couldn't inspect the source repository."],"codes":[{"code":"provenance.repo_verified","args":{}},{"code":"provenance.verified","args":{"repo":"pipeworx-io/mcp-imf-portwatch"}},{"code":"license.osi","args":{"spdx":"MIT"}},{"code":"maintenance.recent","args":{"age_days":"3"}},{"code":"disclosure.repo_inconclusive","args":{"reason":"policy_probe_unavailable"}}]},{"name":"Schema Quality & AI Usability","score":63,"verdict":"fail","reasons":["AI-judged instruction clarity (excellent).","Context-footprint check failed: tool/resource definitions use about 1632 tokens (~272/item across 6 items; 6 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":"272","items":"6","tools":"6","tokens":"1632","resources":"0"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":23,"verdict":"partial","reasons":["Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses."],"codes":[{"code":"stability.building_history","args":{"days":"7"}}]},{"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 6 captured tool definition(s), and no name or description among them implies an irreversible operation.","An AI judge read all 7 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":"6"}},{"code":"toolsafety.manipulation_clean","args":{"units":"7","judged":"7"}}]},{"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":["Security-disclosure policy not yet verified: we couldn't inspect the source repository."],"malware":[],"components":[{"slug":"imf-portwatch-mcp","type":"remote","identifier":"https://gateway.pipeworx.io/imf-portwatch/mcp","withdrawn":false,"score":77,"current":false,"url":"https://verifymcp.io/servers/pipeworx-io-imf-portwatch/imf-portwatch-mcp","markdownUrl":"https://verifymcp.io/servers/pipeworx-io-imf-portwatch/imf-portwatch-mcp.md"},{"slug":"pipeworx-mcp-imf-portwatch","type":"npm","identifier":"@pipeworx/mcp-imf-portwatch","withdrawn":false,"score":82,"current":true,"url":"https://verifymcp.io/servers/pipeworx-io-imf-portwatch/pipeworx-mcp-imf-portwatch","markdownUrl":"https://verifymcp.io/servers/pipeworx-io-imf-portwatch/pipeworx-mcp-imf-portwatch.md"}],"facts":[{"label":"Registry","value":"npm"},{"label":"Package","value":"@pipeworx/mcp-imf-portwatch"},{"label":"Version","value":"0.2.2"},{"label":"Transport","value":"stdio"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"chokepoints_list","title":null,"description":"List the 8 major maritime chokepoints PortWatch tracks (Suez, Panama, Bosphorus, Gibraltar, Dover, Malacca, Hormuz, Bab-el-Mandeb) with annual vessel counts, traffic mix by cargo type (container / dry bulk / tanker / RoRo / general), and top industries by volume. Use to discover what a chokepoint normally carries — for live daily throughput call chokepoint_daily_traffic. The response carries served_from: \"primary\" or \"fallback\"; when IMF's reference layer is down it is built from the daily transit layer and omits annual totals, lat/lon and top industries (see missing_vs_primary).","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":146},{"name":"chokepoint_daily_traffic","title":null,"description":"Daily vessel counts and aggregate capacity (deadweight tonnage) transiting a specific chokepoint. Returns time series ordered most-recent-first, with per-cargo-type breakdown (container / dry bulk / general cargo / RoRo / tanker). Use for \"is Suez traffic back to normal after the Houthi attacks\", \"Hormuz throughput vs 30d average\", or any bet predicated on a chokepoint disruption persisting. Accepts friendly names (suez / panama / hormuz / bab-el-mandeb / etc.) or PortWatch portid (chokepoint1..8).","inputs":[{"name":"chokepoint","type":"string","required":true,"description":"Friendly name (e.g. \"Hormuz\", \"Suez Canal\") or portid (\"chokepoint7\")"},{"name":"days","type":"number","required":false,"description":"Lookback window in days (default 30, max 365). Data is daily."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":195},{"name":"port_search","title":null,"description":"Search the PortWatch port database (1,500+ ports globally) by name, country, or ISO3. Returns matching ports with country, continent, latitude/longitude, annual vessel counts by cargo type, top industries, and the port's share of the country's maritime imports/exports. Useful for identifying which ports would be affected by a country-level disruption, or finding the LOCODE / portid for a named port.","inputs":[{"name":"country","type":"string","required":false,"description":"Country filter — full name (\"Netherlands\") or ISO3 (\"NLD\")"},{"name":"limit","type":"number","required":false,"description":"Max results (default 20, max 100)"},{"name":"query","type":"string","required":false,"description":"Free-text portname match (e.g. \"Rotterdam\", \"Houston\", \"Singapore\")"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":157},{"name":"recent_disruptions","title":null,"description":"Port-affecting disruption events tracked by PortWatch — tropical cyclones, floods, earthquakes, conflict events — with start/end dates, alert level (GREEN/ORANGE/RED), severity, affected port count, and impacted population. Filter by country, alert level, or year. Use for \"what disrupted shipping in the last month\", \"which port closures hit our supply chain\", or to validate a bet on whether a current disruption is escalating.","inputs":[{"name":"alert_level","type":"string","required":false,"description":"RED | ORANGE | GREEN — minimum alert level to include"},{"name":"country","type":"string","required":false,"description":"Filter to a single country name (e.g. \"Mozambique\")"},{"name":"limit","type":"number","required":false,"description":"Max events to return (default 25, max 100)"},{"name":"year","type":"number","required":false,"description":"Filter to events from this calendar year"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":173},{"name":"chokepoint_status","title":null,"description":"Chokepoint traffic status for one maritime chokepoint: the most recent settled day of vessel transits scored against a trailing baseline, so an agent can tell at a glance whether shipping through that strait or canal is above, below, or at its normal run rate. Answers \"is shipping through the Strait of Hormuz down\", \"Suez Canal transit volume this week\", \"Panama Canal ship counts vs normal\", \"maritime chokepoint disruption check\", \"tanker traffic anomaly at Bab el-Mandeb\". Returns the latest day (total vessels, per-vessel-type counts, aggregate capacity in deadweight tonnage), data_lag_days plus a freshness_note, the baseline mean with delta / percent deviation / direction (above, below, normal), 7-day and 30-day means, the same percent deviation per vessel type (tanker, container, dry_bulk, general_cargo, roro — a tanker-only drop at Hormuz is the tradeable signal), and the min and max daily total in the window with their dates. Source is IMF PortWatch daily AIS-derived transit counts, published with a multi-day lag, so the \"latest\" day is the most recent settled day rather than a live count. Accepts forgiving names — \"Hormuz\", \"Strait of Hormuz\", \"hormuz\", \"Suez\", \"Panama\", \"Bab el-Mandeb\", \"Malacca\", \"Taiwan\", \"Bosphorus\", \"Gibraltar\", \"Dover\" — or a PortWatch portid like \"chokepoint6\". Examples: chokepoint_status({chokepoint: \"Hormuz\"}); chokepoint_status({chokepoint: \"Suez Canal\", baseline_days: 30}); chokepoint_status({chokepoint: \"Panama\"}).","inputs":[{"name":"baseline_days","type":"number","required":false,"description":"Length of the trailing baseline window in days, measured backward from the day before the latest settled day (default 90, min 7, max 364)."},{"name":"chokepoint","type":"string","required":true,"description":"Chokepoint name, alias, or portid — e.g. \"Hormuz\", \"Strait of Hormuz\", \"Suez Canal\", \"Bab el-Mandeb\", \"chokepoint6\""}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":477},{"name":"chokepoint_compare","title":null,"description":"Compare chokepoint traffic status across 2 to 6 maritime chokepoints side by side and rank them by how far each one has deviated from its own trailing baseline, so an agent can spot which strait or canal is the anomalous one. Answers \"which maritime chokepoint is disrupted right now\", \"Suez Canal transit volume vs Bab el-Mandeb\", \"compare Panama Canal ship counts to Hormuz\", \"tanker traffic anomaly across chokepoints\". For each chokepoint returns the latest settled day and its total, the baseline mean over the window, the delta, the percent deviation, the direction (above, below, normal), and the per-vessel-type percent deviation; results are sorted with the largest absolute deviation first. Reports data_lag_days and a freshness_note for the whole comparison. Source is IMF PortWatch daily AIS-derived transit counts, published with a multi-day lag, so every \"latest\" figure is the most recent settled day rather than a live count. Names are matched forgivingly (\"Hormuz\", \"Strait of Hormuz\", \"Suez\", \"Panama\", \"Bab el-Mandeb\", \"Malacca\", \"Taiwan\", \"Bosphorus\", \"Gibraltar\", \"Dover\") or accept a portid. Examples: chokepoint_compare({chokepoints: [\"Hormuz\", \"Suez\", \"Bab el-Mandeb\"]}); chokepoint_compare({chokepoints: [\"Suez\", \"Cape of Good Hope\"], days: 90}); chokepoint_compare({chokepoints: [\"Panama\", \"Suez\", \"Malacca\", \"Hormuz\"], days: 14}).","inputs":[{"name":"chokepoints","type":"array","required":true,"description":"Two to six chokepoint names, aliases, or portids — e.g. [\"Hormuz\", \"Suez\", \"Bab el-Mandeb\"]"},{"name":"days","type":"number","required":false,"description":"Length of the trailing baseline window in days for every chokepoint (default 30, min 7, max 364)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":428}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T08:43:56.000Z","track":"package","endpoint":null,"declaredUrl":null,"truncated":false,"tls":null,"dnssec":null,"auth":null,"httpsRedirect":null,"transports":[],"provenance":{"outcome":"verified","label":"Verified","reason":"verified","reasonLabel":"Verified","discovery":"attestation_endpoint","discoveryLabel":"Registry attestation endpoint","sourceRepo":null,"attestationSkipped":null,"attestationSkippedLabel":null},"installScripts":[],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":{"nodes":0,"partial":false,"deprecated":null,"stale":null,"noRepo":null}},"mismatches":[],"changelog":{"trackingSince":"2026-10-29","recent":[{"id":"chg_01a1a5b6-082e-741b-8441-db9687a92e93","kind":"check.unverifiable","summary":"Security disclosure (fail → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-04","url":"https://verifymcp.io/servers/pipeworx-io-imf-portwatch/pipeworx-mcp-imf-portwatch#chg-chg_01a1a5b6-082e-741b-8441-db9687a92e93"},{"id":"chg_01a1a5b6-082f-7622-b5ba-44ce3b9e663f","kind":"score.total_changed","summary":"Trust score (81 → 82)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-04","url":"https://verifymcp.io/servers/pipeworx-io-imf-portwatch/pipeworx-mcp-imf-portwatch#chg-chg_01a1a5b6-082f-7622-b5ba-44ce3b9e663f"},{"id":"chg_01a1a091-b764-7eb7-906e-710accaecedc","kind":"score.total_changed","summary":"Trust score (66 → 81)","materiality":"functional","direction":"improvement","scoreDelta":15,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/pipeworx-io-imf-portwatch/pipeworx-mcp-imf-portwatch#chg-chg_01a1a091-b764-7eb7-906e-710accaecedc"},{"id":"chg_01a1a091-b764-7049-8ea4-e40cec3ad181","kind":"check.reverified","summary":"Malware scan (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/pipeworx-io-imf-portwatch/pipeworx-mcp-imf-portwatch#chg-chg_01a1a091-b764-7049-8ea4-e40cec3ad181"},{"id":"chg_01a19a64-ad2d-70d0-a614-8109d3200678","kind":"package.version_changed","summary":"Package version (0.2.1 → 0.2.2)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/pipeworx-io-imf-portwatch/pipeworx-mcp-imf-portwatch#chg-chg_01a19a64-ad2d-70d0-a614-8109d3200678"},{"id":"chg_01a19a64-ad2d-76f5-88f2-ba564c35544c","kind":"score.total_changed","summary":"Trust score (80 → 66)","materiality":"functional","direction":"regression","scoreDelta":-14,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/pipeworx-io-imf-portwatch/pipeworx-mcp-imf-portwatch#chg-chg_01a19a64-ad2d-76f5-88f2-ba564c35544c"},{"id":"chg_01a19a64-ad2a-74c8-a02f-095d78c2894f","kind":"check.unverifiable","summary":"Malware scan (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/pipeworx-io-imf-portwatch/pipeworx-mcp-imf-portwatch#chg-chg_01a19a64-ad2a-74c8-a02f-095d78c2894f"},{"id":"chg_01a19128-8b28-7304-9b56-b3562925c94c","kind":"check.reverified","summary":"Malware scan (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/pipeworx-io-imf-portwatch/pipeworx-mcp-imf-portwatch#chg-chg_01a19128-8b28-7304-9b56-b3562925c94c"},{"id":"chg_01a19128-8b2a-76b9-91b1-44059ba722a1","kind":"score.total_changed","summary":"Trust score (64 → 80)","materiality":"functional","direction":"improvement","scoreDelta":16,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/pipeworx-io-imf-portwatch/pipeworx-mcp-imf-portwatch#chg-chg_01a19128-8b2a-76b9-91b1-44059ba722a1"},{"id":"chg_01a18a7d-4c06-723d-aadd-c97aa5c2fc3c","kind":"check.unverifiable","summary":"Malware scan (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/pipeworx-io-imf-portwatch/pipeworx-mcp-imf-portwatch#chg-chg_01a18a7d-4c06-723d-aadd-c97aa5c2fc3c"},{"id":"chg_01a18a7d-4c08-787e-9e4b-347c94bc2bc3","kind":"package.version_changed","summary":"Package version (0.2.0 → 0.2.1)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/pipeworx-io-imf-portwatch/pipeworx-mcp-imf-portwatch#chg-chg_01a18a7d-4c08-787e-9e4b-347c94bc2bc3"},{"id":"chg_01a18a7d-4c08-7263-806e-cad817c59454","kind":"check.reverified","summary":"Stability (unverified → 0.03)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/pipeworx-io-imf-portwatch/pipeworx-mcp-imf-portwatch#chg-chg_01a18a7d-4c08-7263-806e-cad817c59454"},{"id":"chg_01a18a7d-4c08-7f23-8ba5-dd67d0b1ce66","kind":"score.total_changed","summary":"Trust score (79 → 64)","materiality":"functional","direction":"regression","scoreDelta":-15,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/pipeworx-io-imf-portwatch/pipeworx-mcp-imf-portwatch#chg-chg_01a18a7d-4c08-7f23-8ba5-dd67d0b1ce66"},{"id":"chg_01a18711-6d32-7a52-95e0-b0a60b8c1642","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/pipeworx-io-imf-portwatch/pipeworx-mcp-imf-portwatch#chg-chg_01a18711-6d32-7a52-95e0-b0a60b8c1642"}],"truncated":false,"feedUrl":"https://verifymcp.io/servers/pipeworx-io-imf-portwatch/pipeworx-mcp-imf-portwatch/changelog.json"},"links":{"html":"https://verifymcp.io/servers/pipeworx-io-imf-portwatch/pipeworx-mcp-imf-portwatch","markdown":"https://verifymcp.io/servers/pipeworx-io-imf-portwatch/pipeworx-mcp-imf-portwatch.md","changelogJson":"https://verifymcp.io/servers/pipeworx-io-imf-portwatch/pipeworx-mcp-imf-portwatch/changelog.json","changelogRss":"https://verifymcp.io/servers/pipeworx-io-imf-portwatch/pipeworx-mcp-imf-portwatch.xml","external":[{"label":"npm package","href":"https://www.npmjs.com/package/@pipeworx/mcp-imf-portwatch"},{"label":"Socket report","href":"https://socket.dev/npm/package/@pipeworx/mcp-imf-portwatch"},{"label":"Repository","href":"https://github.com/pipeworx-io/mcp-imf-portwatch"},{"label":"Website","href":"https://pipeworx.io/packs/imf-portwatch"}]}}