# Caves

> Explore caves worldwide — by length, depth, and type. Sourced from Wikipedia.

This site is agent-friendly: the full dataset is queryable by any attribute via a public JSON API (no API key) and an MCP server. Data is sourced from Wikipedia (CC BY-SA).

## Data
- 598 caves across 76 countries.

## API (no key, rate-limited per IP)
- Search caves by any attribute: `GET http://caves.tello.app/api/v1/locations?<filters>`
- A single cave: `GET http://caves.tello.app/api/v1/locations/{slug}`
- Countries with counts: `GET http://caves.tello.app/api/v1/countries`
- Machine-readable filter schema (every queryable attribute): `GET http://caves.tello.app/api/v1/schema`
- OpenAPI 3 spec: `GET http://caves.tello.app/openapi.json`

## MCP server
- Endpoint: `http://caves.tello.app/mcp` (Streamable HTTP).
- Tools: `search`, `get`, `list_countries`, `describe_filters`.

## Queryable attributes
- `search` — Name search
- `country` — Country
- `length_m` — Length (range: `length_m_min`, `length_m_max` m)
- `depth_m` — Depth (range: `depth_m_min`, `depth_m_max` m)
- `type` — Type (one of: Limestone, Lava, Sea, Ice, Sandstone, Solutional, Karst)
- `has_image` — Has photo (1 / true)
- `has_coordinates` — Has coordinates (1 / true)
- `sort` — one of: length_desc, depth_desc, name

## Examples
- Find caves in Norway → `GET http://caves.tello.app/api/v1/locations?country=norway`
- caves of type "Limestone" → `GET http://caves.tello.app/api/v1/locations?type=Limestone`
- caves with Length over 100 m → `GET http://caves.tello.app/api/v1/locations?length_m_min=100`

## Per-entry Markdown
Append `.md` to any cave URL (e.g. `http://caves.tello.app/location/<slug>.md`), or send `Accept: text/markdown`, to get clean Markdown instead of HTML.
