{"name":"io.github.clairwave/clairwave","slug":"clairwave","title":"Clairwave","description":"Ocean acoustics: propagation models, bathymetry, sound speed, vessel noise, live AIS. Open.","url":"https://mcp.market/server/clairwave","rating":null,"grade":"B","score":75,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":18,"stars":0,"forks":0,"downloads_week":null,"last_push_at":"2026-09-27T11:51:18.000Z","license":null},"uptime":{"percent":79,"checks":28,"ok":22,"last_checked_at":"2026-11-05T17:20:50.412Z","last_ok_at":"2026-11-05T17:20:50.412Z","latency_ms":310},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/clairwave/clairwave-mcp","website":"https://www.clairwave.com","version":"0.4.0","remotes":[{"type":"streamable-http","url":"https://www.clairwave.com/mcp"}],"packages":[],"tools":[{"name":"about","description":"What Clairwave provides, which models/data back each tool, and limits.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"title":"aboutArguments"}},{"name":"estimate_detection_range","description":"Sonar detection range along a bearing from a location (lat/lon or `place`).\n    Transmission loss (TL) is ALWAYS computed: RAM parabolic equation with the\n    location's bathymetry, seasonal sound speed (`month`, default: current month)\n    and seabed. Every other sonar-equation term is optional — anything not given\n    gets a stated, typical default listed in `assumptions` with its source.\n    Tell the user which values were assumed.\n\n    Detection threshold DT is derived from processing gain (unless given):\n    detection index d from `pd`/`pfa` (default 0.5 / 1e-4 → d ≈ 13.8), then\n      passive (incoherent energy detector): DT = 5·log10(d / (B·T)),\n        B = analysis band, T = `integration_time_s` (default 1 s);\n      active (matched filter): DT = 10·log10(d / (2·B·τ)),\n        B = `bandwidth_hz` (default 100 Hz LFM), τ = `pulse_length_s` (default 0.5 s).\n    DT is in-band SNR, so it can be negative — that IS the processing gain.\n\n    mode=\"passive\": SE = SL − TL − (NL − DI) − DT. Default target = merchant ship\n      (bulk carrier, AIS 70, 200 m @ 12 kn, JOMOPANS-ECHO decidecade band level) at\n      6 m; receiver ½ water depth (≤ 30 m), omni (DI 0 — give directivity_index_db\n      for an array). `frequency_hz` is optional: the tool always also evaluates\n      the target's MOST DETECTABLE 1/3-octave band in 50–2000 Hz (`best_band`) —\n      ships are loudest there; a user frequency is reported as asked. If you give\n      `source_level_db` without `frequency_hz`, the range is evaluated at 50 Hz.\n    mode=\"active\" (monostatic, `frequency_hz` required): SE = SL − 2·TL + TS −\n      (NL − DI) − DT, TL from the sonar to the target depth. Defaults: hull sonar\n      at 7 m, SL 220 dB, TS 10 dB (large underwater object, beam aspect), target ½ water\n      depth (≤ 50 m), DI 20 dB (hull array). Noise-limited only: reverberation is\n      NOT included (often the limit in shallow water).\n    NL (unless given) = Wenz ambient noise at the CURRENT forecast wind at the point\n    (Clairwave weather), moderate shipping, in the analysis band.\n    Units: dB re 1 µPa (SL @ 1 m).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"lat":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Lat"},"lon":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Lon"},"place":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Place"},"mode":{"default":"passive","title":"Mode","type":"string"},"frequency_hz":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Frequency Hz"},"source_depth_m":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Source Depth M"},"source_level_db":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Source Level Db"},"receiver_depth_m":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Receiver Depth M"},"noise_level_db":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Noise Level Db"},"detection_threshold_db":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Detection Threshold Db"},"target_strength_db":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Target Strength Db"},"target_depth_m":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Target Depth M"},"directivity_index_db":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Directivity Index Db"},"bandwidth_hz":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Bandwidth Hz"},"integration_time_s":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Integration Time S"},"pulse_length_s":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Pulse Length S"},"pd":{"default":0.5,"title":"Pd","type":"number"},"pfa":{"default":0.0001,"title":"Pfa","type":"number"},"bearing_deg":{"default":0,"title":"Bearing Deg","type":"number"},"max_range_km":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Max Range Km"},"month":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Month"}},"title":"estimate_detection_rangeArguments"}},{"name":"get_bathymetry","description":"Seafloor depth from Clairwave-served global bathymetry (~450 m resolution). Location:\n    lat/lon or `place` (name resolved to a water point, echoed in `location`).\n    Without a bearing: depth at the point. With a bearing (compass degrees,\n    0 = north): a depth profile along that transect out to range_km.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"lat":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Lat"},"lon":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Lon"},"place":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Place"},"bearing_deg":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Bearing Deg"},"range_km":{"default":20,"title":"Range Km","type":"number"},"n_points":{"default":100,"title":"N Points","type":"integer"}},"title":"get_bathymetryArguments"}},{"name":"get_sound_speed_profile","description":"Seasonal sound-speed profile c(z) at a location (lat/lon or `place`\n    name, e.g. \"Halifax approaches\") for a calendar month\n    (1-12), from Clairwave-served seasonal temperature/salinity climatology, plus the seabed\n    parameters (compressional/shear speed, density ratio, attenuation,\n    sediment type) at the same point. Cached per 0.1 degree.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"month":{"title":"Month","type":"integer"},"lat":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Lat"},"lon":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Lon"},"place":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Place"}},"required":["month"],"title":"get_sound_speed_profileArguments"}},{"name":"get_vessel","description":"Everything about one vessel: live AIS position/track and static\n    particulars, plus its 3D model (unique photo-derived model if generated,\n    else the class archetype) with GLB URL (bow=+Z, up=+Y) and platform links.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"mmsi":{"title":"Mmsi","type":"string"}},"required":["mmsi"],"title":"get_vesselArguments"}},{"name":"get_vessel_photo","description":"Photograph of a vessel from Wikimedia Commons, with attribution.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"imo":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Imo"},"mmsi":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Mmsi"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Name"}},"title":"get_vessel_photoArguments"}},{"name":"habitat_received_level","description":"Broadband received level (dB re 1 uPa) at a fixed site — a fish farm,\n    reef, hydrophone or marine protected area — from the ships around it,\n    power-summed. Each vessel's source level comes from its AIS class, speed\n    and size; transmission loss is a fast broadband model, so this is a\n    screening estimate (use run_transmission_loss for exact site physics).\n    hours_back = 0 uses the live snapshot; > 0 reconstructs a time series from\n    the AIS archive in 10-minute bins (max/median/quiet levels). Location:\n    lat/lon or `place`. Show `open_url` to the user as a clickable link.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"lat":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Lat"},"lon":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Lon"},"place":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Place"},"max_range_km":{"default":30,"title":"Max Range Km","type":"number"},"hours_back":{"default":0,"title":"Hours Back","type":"number"},"top":{"default":10,"title":"Top","type":"integer"}},"title":"habitat_received_levelArguments"}},{"name":"resolve_place","description":"Turn a place name ('outside Halifax', 'Strait of Hormuz', 'Bergen,\n    Norway') into water coordinates. Maritime gazetteer first (ports resolve\n    to their approaches, straits/seas to a representative point), then\n    OpenStreetMap. Points on land or shallower than min_depth_m are walked\n    seaward along the gazetteer bearing (or the nearest direction) until deep\n    enough; the original point and the snap are reported. offshore_km pushes\n    the point further out along seaward_bearing_deg. All location tools also\n    accept `place` directly, so a separate call is only needed to inspect.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"place":{"title":"Place","type":"string"},"seaward_bearing_deg":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Seaward Bearing Deg"},"offshore_km":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Offshore Km"},"min_depth_m":{"default":10,"title":"Min Depth M","type":"number"}},"required":["place"],"title":"resolve_placeArguments"}},{"name":"run_bellhop_volume","description":"Full 3D transmission-loss volume around a source (lat/lon or `place`)\n    with Bellhop (all bearings), stored on the platform under a run id. Show\n    `open_url` to the user as a clickable link: it opens this run visualized. Returns the run id,\n    the replication metadata (SSP, seabed, bounding box) and file links\n    (uint8 TL cube .npy + JSON sidecar). Any frequency and radius (keep radius\n    <= ~50 km for reasonable run times).","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"lat":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Lat"},"lon":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Lon"},"place":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Place"},"source_depth_m":{"default":20,"title":"Source Depth M","type":"number"},"frequency_hz":{"default":200,"title":"Frequency Hz","type":"number"},"radius_km":{"default":10,"title":"Radius Km","type":"number"},"month":{"default":6,"title":"Month","type":"integer"}},"title":"run_bellhop_volumeArguments"}},{"name":"run_transmission_loss","description":"Run a physically grounded transmission-loss simulation (RAM parabolic\n    equation) from a source at (lat, lon or `place`, depth) along a compass bearing.\n    Bathymetry, the seasonal sound-speed profile (`month`) and\n    seabed parameters are fetched for the location automatically. Returns TL\n    vs range at the receiver depths (default: source depth, 10 m, 100 m,\n    mid-water), grid statistics, and the full replication bundle. Show\n    `open_url` to the user as a clickable link.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"source_depth_m":{"title":"Source Depth M","type":"number"},"frequency_hz":{"title":"Frequency Hz","type":"number"},"bearing_deg":{"title":"Bearing Deg","type":"number"},"lat":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Lat"},"lon":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Lon"},"place":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Place"},"range_km":{"default":20,"title":"Range Km","type":"number"},"month":{"default":6,"title":"Month","type":"integer"},"receiver_depths_m":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"default":null,"title":"Receiver Depths M"}},"required":["source_depth_m","frequency_hz","bearing_deg"],"title":"run_transmission_lossArguments"}},{"name":"search_vessels","description":"Search live AIS vessels by name or MMSI prefix (global feed).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"title":"Query","type":"string"},"limit":{"default":8,"title":"Limit","type":"integer"}},"required":["query"],"title":"search_vesselsArguments"}},{"name":"vessel_source_level","description":"Underwater radiated-noise source level of a ship (monopole, dB re 1 uPa m, 6 m\n    reference source depth): decidecade spectrum (10 Hz - 100 kHz; model bands to\n    31.5 kHz, validated 20 Hz - 20 kHz) and broadband level, from the JOMOPANS-ECHO\n    reference spectrum model (MacGillivray & de Jong 2021, J. Mar. Sci. Eng. 9:369),\n    fitted to 1862 measured ship passes. Individual ships scatter about +/-6 dB rms per band.\n    Give an MMSI (live AIS type/speed/length are used) or explicit AIS ship_type / speed /\n    length. vessel_class overrides the AIS mapping (e.g. \"vehicle_carrier\", which has no\n    AIS type). Missing speed = the class reference speed; missing length = the class\n    mean length of the measured ships. The spectrum is usable directly as `sl_spectrum`.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"mmsi":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Mmsi"},"ship_type":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Ship Type"},"speed_kn":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Speed Kn"},"length_m":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Length M"},"beam_m":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Beam M"},"draft_m":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Draft M"},"vessel_class":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Vessel Class"}},"title":"vessel_source_levelArguments"}},{"name":"vessels_near","description":"Live AIS vessels within radius_km of a point (lat/lon or `place`), nearest first, with\n    position, course/speed, type, dimensions and last-update time.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"lat":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Lat"},"lon":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Lon"},"place":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Place"},"radius_km":{"default":25,"title":"Radius Km","type":"number"},"limit":{"default":30,"title":"Limit","type":"integer"}},"title":"vessels_nearArguments"}}],"scan":{"score":75,"grade":"B","scanned_at":"2026-10-29T05:59:47.623Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-10-29T05:59:47.537Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 1202ms"]},"poisoning":{"score":13,"max":15,"notes":["13 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 2 write-action tools with no auth"]},"maintenance":{"score":12,"max":15,"notes":["last push 32 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"},{"id":"poison.long-description","severity":"low","component":"poisoning","title":"Unusually long tool description (over 2,000 characters)","evidence":"tool estimate_detection_range: …Sonar detection range along a bearing from a location (lat/lon or `place`). Transmission loss (TL) is ALWAYS computed: RAM parabolic equation with the location's bathymetry, seasonal sound speed (`month`, default: current month) and seabed. Every other sonar-equation term is optional — anything not given gets a stated, typical default listed in `assumptions` with its source. Tell the user which values were assumed. Detection threshold DT is derived from processing gain (unless given): detection index d from `pd`/`pfa` (default 0.5 / 1e-4 → d ≈ 13.8), then passive (incoherent energy detector): DT = 5·log10(d / (B·T)), B = analysis band, T = `integration_time_s` (default 1 s); active (matched filter): DT = 10·log10(d / (2·B·τ)), B = `bandwidth_hz` (default 100 Hz LFM), τ = `pulse_length_s` (default 0.5 s). DT is in-band SNR, so it can be negative — that IS the processing gain. mode=\"passive\": SE = SL − TL − (NL − DI) − DT. Default target = merchant ship (bulk carrier, AIS 70, 200 m @ 12 kn, JOMOPANS-ECHO decidecade band level) at 6 m; receiver ½ water depth (≤ 30 m), omni (DI 0 — give directivity_index_db for an array). `frequency_hz` is optional: the tool always also evaluates the target's MOST DETECTABLE 1/3-octave band in 50–2000 Hz (`best_band`) — ships are loudest there; a user frequency is reported as asked. If you give `source_level_db` without `frequency_hz`, the range is evaluated at 50 Hz. mode=\"active\" (monostatic, `frequency_hz` required): SE = SL − 2·TL + TS − (NL − DI) − DT, TL from the sonar to the target depth. Defaults: hull sonar at 7 m, SL 220 dB, TS 10 dB (large underwater object, beam aspect), target ½ water depth (≤ 50 m), DI 20 dB (hull array). Noise-limited only: reverberation is NOT included (often the limit in shallow water). NL (unless given) = Wenz ambient noise at the CURRENT forecast wind at the point (Clairwave weather), moderate shipping, in the analysis band. Units: dB re 1 µPa (SL @ 1 m).…"}],"inputs":{"probes":[{"url":"https://www.clairwave.com/mcp","reachable":true,"authRequired":false,"latencyMs":1202,"serverInfo":{"name":"clairwave","version":"1.30.0"}}],"packages":[],"repo":{"found":true,"owner":"clairwave","repo":"clairwave-mcp","archived":false,"pushedAt":"2026-09-27T11:51:18Z","stars":0,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/68205793?v=4","ownerCreatedAt":"2020-07-12T22:51:01Z"},"icon":{"url":"https://www.clairwave.com/favicon.ico","source":"registry","width":48,"height":48},"presence":{"stars":0,"forks":0,"downloadsWeek":null,"license":null,"lastPushAt":"2026-09-27T11:51:18.000Z","score":18}}}},"grade_history":[{"kind":"restore","fromGrade":"D","toGrade":"B","reason":"score 75: Write-action tools reachable without authentication; Unusually long tool description (over 2,000 characters)","createdAt":"2026-10-29T05:59:50.842Z"},{"kind":"downgrade","fromGrade":"A","toGrade":"D","reason":"score 42: Remote endpoint did not respond","createdAt":"2026-10-27T18:14:50.505Z"}],"reviews":[]}