Cave diving sites worldwide: depths, required level, warnings, guides, fills and current conditions.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
The same check as the trip planner: for each cave of a region (or the given caves), whether the whole team can dive it, only partly, or not, with the reasons and the warnings that apply to them.
Region id.
Language of the texts: nl, en (default), fr, es or de.
Cave ids; default all caves of the region.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http caves https://divetripplanner.com/mcp
The same check as the trip planner: for each cave of a region (or the given caves), whether the whole team can dive it, only partly, or not, with the reasons and the warnings that apply to them.
| Argument | Type | Description |
|---|---|---|
| lang | string | Language of the texts: nl, en (default), fr, es or de. |
| caves | array | Cave ids; default all caves of the region. |
| divers* | array | |
| region* | string | Region id. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"region",
"divers"
],
"properties": {
"lang": {
"enum": [
"nl",
"en",
"fr",
"es",
"de"
],
"type": "string",
"description": "Language of the texts: nl, en (default), fr, es or de."
},
"caves": {
"type": "array",
"items": {
"type": "string",
"maxLength": 80
},
"maxItems": 200,
"description": "Cave ids; default all caves of the region."
},
"divers": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"cert"
],
"properties": {
"dpv": {
"type": "boolean",
"description": "Brings a scooter and is DPV-trained."
},
"srt": {
"type": "boolean",
"description": "Trained in rope work (SRT)."
},
"cert": {
"enum": [
"ow",
"cavern",
"intro",
"full"
],
"type": "string",
"description": "Cave level: ow (none), cavern, intro, full."
},
"name": {
"type": "string",
"maxLength": 40,
"description": "A first name or label."
},
"configs": {
"type": "array",
"items": {
"enum": [
"backmount",
"sidemount",
"ccr",
"small"
],
"type": "string"
},
"description": "What they dive: backmount, sidemount, ccr, small (small/no-mount)."
},
"gasCerts": {
"type": "array",
"items": {
"enum": [
"nitrox",
"adv_nitrox",
"deco",
"normoxic",
"hypoxic"
],
"type": "string"
},
"description": "Gas certifications: nitrox, adv_nitrox, deco, normoxic, hypoxic."
},
"maxDepth": {
"type": "number",
"maximum": 400,
"minimum": 0,
"description": "Their own depth limit in metres, if lower than their certifications give."
}
}
},
"maxItems": 20,
"minItems": 1
},
"region": {
"type": "string",
"maxLength": 80,
"description": "Region id."
}
}
}What is known about a cave right now: visibility reported by divers (last 14 days, else the latest up to 60 days), river flow and level with a visibility estimate where the cave has a gauge, rain of the past 7 days, and tropical storms nearby. Updated once a day.
| Argument | Type | Description |
|---|---|---|
| cave* | string | Cave id. |
| lang | string | Language of the texts: nl, en (default), fr, es or de. |
| region* | string | Region id. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"region",
"cave"
],
"properties": {
"cave": {
"type": "string",
"maxLength": 80,
"description": "Cave id."
},
"lang": {
"enum": [
"nl",
"en",
"fr",
"es",
"de"
],
"type": "string",
"description": "Language of the texts: nl, en (default), fr, es or de."
},
"region": {
"type": "string",
"maxLength": 80,
"description": "Region id."
}
}
}Everything the cave's public page says: depth, certification level, configurations, access, the story, warnings, closure, water temperature, who guides there, fill stations nearby and sources.
| Argument | Type | Description |
|---|---|---|
| cave* | string | Cave id (from search_caves). |
| lang | string | Language of the texts: nl, en (default), fr, es or de. |
| region* | string | Region id. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"region",
"cave"
],
"properties": {
"cave": {
"type": "string",
"maxLength": 80,
"description": "Cave id (from search_caves)."
},
"lang": {
"enum": [
"nl",
"en",
"fr",
"es",
"de"
],
"type": "string",
"description": "Language of the texts: nl, en (default), fr, es or de."
},
"region": {
"type": "string",
"maxLength": 80,
"description": "Region id."
}
}
}A region's practical information (rules, fees, emergency numbers, gas), travel advisory, its dive centres, instructors and fill stations with their services, and the list of its caves.
| Argument | Type | Description |
|---|---|---|
| lang | string | Language of the texts: nl, en (default), fr, es or de. |
| region* | string | Region id from list_regions. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"region"
],
"properties": {
"lang": {
"enum": [
"nl",
"en",
"fr",
"es",
"de"
],
"type": "string",
"description": "Language of the texts: nl, en (default), fr, es or de."
},
"region": {
"type": "string",
"maxLength": 80,
"description": "Region id from list_regions."
}
}
}All cave diving regions with their country, number of caves, maximum depth and page address. Filter by country (ISO code or name).
| Argument | Type | Description |
|---|---|---|
| lang | string | Language of the texts: nl, en (default), fr, es or de. |
| country | string | Country code (fr, mx) or name (France, Mexico). |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"lang": {
"enum": [
"nl",
"en",
"fr",
"es",
"de"
],
"type": "string",
"description": "Language of the texts: nl, en (default), fr, es or de."
},
"country": {
"type": "string",
"maxLength": 80,
"description": "Country code (fr, mx) or name (France, Mexico)."
}
}
}Find caves by name (also other spellings), region, country, maximum depth or the certification level a team has. Returns a short line per cave with its page; use get_cave for the details and warnings.
| Argument | Type | Description |
|---|---|---|
| lang | string | Language of the texts: nl, en (default), fr, es or de. |
| limit | integer | At most this many results (default 25). |
| query | string | Part of the cave's name. |
| region | string | Region id from list_regions (lot, riviera-maya). |
| country | string | Country code or name. |
| maxDepth | number | Only caves whose known maximum depth is at most this many metres. |
| certification | string | The team's cave level (ow, cavern, intro, full): only caves that need at most this. |
| includeClosed | boolean | Also closed and information-only caves (default false). |
We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 8, 2026.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"lang": {
"enum": [
"nl",
"en",
"fr",
"es",
"de"
],
"type": "string",
"description": "Language of the texts: nl, en (default), fr, es or de."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "At most this many results (default 25)."
},
"query": {
"type": "string",
"maxLength": 80,
"description": "Part of the cave's name."
},
"region": {
"type": "string",
"maxLength": 80,
"description": "Region id from list_regions (lot, riviera-maya)."
},
"country": {
"type": "string",
"maxLength": 80,
"description": "Country code or name."
},
"maxDepth": {
"type": "number",
"maximum": 400,
"minimum": 0,
"description": "Only caves whose known maximum depth is at most this many metres."
},
"certification": {
"enum": [
"ow",
"cavern",
"intro",
"full"
],
"type": "string",
"description": "The team's cave level (ow, cavern, intro, full): only caves that need at most this."
},
"includeClosed": {
"type": "boolean",
"description": "Also closed and information-only caves (default false)."
}
}
}