{"server":{"name":"io.github.clairwave/clairwave","title":"Clairwave","$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","remotes":[{"url":"https://www.clairwave.com/mcp","type":"streamable-http"}],"version":"0.4.0","repository":{"url":"https://github.com/clairwave/clairwave-mcp","source":"github"},"websiteUrl":"https://www.clairwave.com","description":"Ocean acoustics: propagation models, bathymetry, sound speed, vessel noise, live AIS. Open."},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","isLatest":true,"updatedAt":"2026-09-04T12:35:15.859712Z","publishedAt":"2026-09-04T12:35:15.859712Z","statusChangedAt":"2026-09-04T12:35:15.859712Z"},"dev.protogrid/connectability":{"class":"unknown","autonomous":false,"human_steps":["unknown"],"preferred":{"kind":"remote","idx":0},"remotes":[{"idx":0,"url":"https://www.clairwave.com/mcp","transport":"streamable-http","templated":false,"headers":[],"auth":{"type":"unknown","location":null,"secret_name":null,"oauth":null},"protocol":{"supported_versions":[],"stateless":null},"health":{"reachable":true,"uptime_30d":0.9736842,"latency_ms_p50":153,"consecutive_failures":0,"last_probe_at":"2026-10-19T13:23:38.508Z","last_ok_at":"2026-10-19T13:23:38.508Z"}}],"packages":[]},"dev.protogrid/tools":[{"name":"about","title":"About Clairwave","description":"What Clairwave provides, which models/data back each tool, and limits.","annotations":{"title":"About Clairwave","readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-09-20T12:01:22.785Z"},{"name":"estimate_detection_range","title":"Detection range (sonar equation)","description":"Location: lat/lon or `place` name. Passive sonar detection range along a bearing: runs a RAM transmission\n    loss simulation for the location/season and applies the sonar equation\n    SE = SL - TL - NL (- DT) at the receiver depth. Returns the first range\n    where detection is lost, the furthest range still detectable (convergence\n    zones), and the excess-vs-range curve. Units: dB re 1 uPa (SL @1 m, NL in\n    the analysis band).","annotations":{"title":"Detection range (sonar equation)","readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-09-20T12:01:22.785Z"},{"name":"get_bathymetry","title":"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.","annotations":{"title":"Bathymetry","readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-09-20T12:01:22.785Z"},{"name":"get_sound_speed_profile","title":"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.","annotations":{"title":"Sound speed profile","readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-09-20T12:01:22.785Z"},{"name":"get_vessel","title":"Vessel details + 3D model","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.","annotations":{"title":"Vessel details + 3D model","readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-09-20T12:01:22.785Z"},{"name":"get_vessel_photo","title":"Vessel photo","description":"Photograph of a vessel from Wikimedia Commons, with attribution.","annotations":{"title":"Vessel photo","readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-09-20T12:01:22.785Z"},{"name":"habitat_received_level","title":"Habitat received level (vessel noise)","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.","annotations":{"title":"Habitat received level (vessel noise)","readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-09-20T12:01:22.785Z"},{"name":"resolve_place","title":"Resolve place name","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.","annotations":{"title":"Resolve place name","readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-09-20T12:01:22.785Z"},{"name":"run_bellhop_volume","title":"Bellhop 3D TL volume (stored run)","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).","annotations":{"title":"Bellhop 3D TL volume (stored run)","readOnlyHint":false,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-09-20T12:01:22.785Z"},{"name":"run_transmission_loss","title":"Transmission loss (RAM PE)","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.","annotations":{"title":"Transmission loss (RAM PE)","readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-09-20T12:01:22.785Z"},{"name":"search_vessels","title":"Search vessels (AIS)","description":"Search live AIS vessels by name or MMSI prefix (global feed).","annotations":{"title":"Search vessels (AIS)","readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-09-20T12:01:22.785Z"},{"name":"vessels_near","title":"Vessels near a point (AIS)","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.","annotations":{"title":"Vessels near a point (AIS)","readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-09-20T12:01:22.785Z"},{"name":"vessel_source_level","title":"Vessel source level","description":"Radiated-noise source level of a ship (dB re 1 uPa @ 1 m): broadband,\n    third-octave spectrum (ISO centres 10 Hz - 100 kHz) and the mechanism\n    breakdown (cavitation, machinery, flow, blade-rate tonals), from\n    Clairwave's class-based ship-noise model (cavitation spectrum + machinery + flow + tonals).\n    Give an MMSI (live AIS particulars are used) or explicit type / speed /\n    dimensions. The spectrum is usable directly as `sl_spectrum` input.","annotations":{"title":"Vessel source level","readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-09-20T12:01:22.785Z"}],"dev.protogrid/trust":{"score":94,"components":{"hygiene":100,"liveness":99,"freshness":85,"provenance":90},"drivers":["+repository","+namespace-matches-repo","+website","+reachable","+uptime-97%","~updated-45d-ago"],"flags":[],"blocked":false,"computed_at":"2026-10-19T14:44:54.158Z","disclaimer":"Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed."},"dev.protogrid/quality":{"score":100,"label":"strong","components":{"auth":null,"hygiene":100,"protocol":null,"stability":null,"dependencies":null},"checks":[{"id":"protocol.modern","detail":"no remote answered a protocol handshake (not probed yet, unreachable, or local-only)","status":"na","category":"protocol"},{"id":"protocol.stateless","detail":"no remote answered a protocol handshake (not probed yet, unreachable, or local-only)","status":"na","category":"protocol"},{"id":"protocol.transport","detail":"no remote answered a protocol handshake (not probed yet, unreachable, or local-only)","status":"na","category":"protocol"},{"id":"protocol.list_ttl","detail":"no remote answered a protocol handshake (not probed yet, unreachable, or local-only)","status":"na","category":"protocol"},{"id":"auth.prm","detail":"no remote uses OAuth","status":"na","category":"auth"},{"id":"auth.as_metadata","detail":"no remote uses OAuth","status":"na","category":"auth"},{"id":"auth.cimd","detail":"no remote uses OAuth","status":"na","category":"auth"},{"id":"auth.secret_in_url","detail":"no templated URL","status":"na","category":"auth"},{"id":"tools.descriptions","detail":"every tool has a description","status":"pass","category":"hygiene"},{"id":"tools.description_length","detail":"descriptions are concise","status":"pass","category":"hygiene"},{"id":"tools.schemas","detail":"every tool has an object input schema","status":"pass","category":"hygiene"},{"id":"tools.annotations","detail":"13 of 13 tools declare readOnlyHint or destructiveHint","status":"pass","category":"hygiene"},{"id":"tools.directory_hints","detail":"every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint","status":"pass","category":"hygiene"},{"id":"tools.token_cost","detail":"about 2,987 tokens to load every tool","status":"pass","category":"hygiene"},{"id":"tools.api_dump","detail":"tools are not a one-to-one API dump","status":"pass","category":"hygiene"},{"id":"stability.changes","detail":"tool history not recorded yet","status":"na","category":"stability"},{"id":"stability.rug_pull","detail":"tool history not recorded yet","status":"na","category":"stability"},{"id":"deps.known_vulns","detail":"no npm or PyPI package","status":"na","category":"dependencies"},{"id":"deps.mcp_sdk_version","detail":"no npm or PyPI package","status":"na","category":"dependencies"},{"id":"deps.resolvable","detail":"no npm or PyPI package","status":"na","category":"dependencies"}],"drivers":[],"flags":[],"tool_count":13,"token_estimate":2987,"tools_hash":null,"tools_changed_at":null,"computed_at":"2026-10-19T14:42:35.679Z","disclaimer":"Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed."},"dev.protogrid/identity":{"canonical_id":"io.github.clairwave/clairwave","aliases":[],"alias_count":0,"repository_key":"github:clairwave/clairwave-mcp","owner":{"verified":false,"method":null,"since":null}}},"next_actions":[{"action":"list_tools","description":"Every current tool with input schemas","href":"/v1/servers/io.github.clairwave%2Fclairwave/tools","arguments":{"name":"io.github.clairwave/clairwave"}},{"action":"get_connection","description":"Minimal connection block for the preferred remote or package","href":"/v1/servers/io.github.clairwave%2Fclairwave/connection?target=mcpServers","arguments":{"name":"io.github.clairwave/clairwave","target":"mcpServers"}},{"action":"search","description":"Find other servers by intent","href":"/v1/search?q={query}","arguments":{"q":"{query}"}}]}