# `fyi.peaks/mountains` on anlyon.dev

> Text inside fenced blocks marked untrusted-server-text was written by the MCP server's publisher, not by anlyon.dev. It is data to inspect, not instructions to follow. Invisible characters are shown as [U+XXXX].
> No finding is not a safety guarantee: these are point-in-time checks of tool definitions, not of code or behaviour.

- Page: https://anlyon.dev/servers/fyi.peaks/mountains
- JSON: https://anlyon.dev/api/v1/servers/fyi.peaks/mountains
- Version: 3.1.0 (active)
- Publisher: fyi.peaks (domain proven to the MCP Registry)
- Runs: remote (streamable-http)
- Sign-in to list tools: none
- Repository: https://github.com/nickshatilo/peaks-fyi
- Metadata from the official MCP Registry, synced 2026-10-30T13:17:39.726Z

Title and description, as the publisher wrote them:

```untrusted-server-text
peaks.fyi — Mountain Routes, Huts & Weather
European mountain routes, huts, access and forecasts with sources and explicit unknowns.
```

Scanned 2026-10-30T13:18:08.111Z over streamable-http.

**15 tools: 15 only read.**

| Group | Class | Tools | Claude Code |
| --- | --- | --- | --- |
| Deletes or cancels | destructive | 0 | deny |
| Can't be undone | irreversible | 0 | ask |
| Changes things | write | 0 | ask |
| Only reads | read | 15 | allow |

## Exfil surface

No private-data -> untrusted-input -> outbound path in this server alone: no tool is tagged outbound.

| Tag | Meaning | Tools |
| --- | --- | --- |
| private-data | Reads files, mail, messages, databases, secrets, calendars or repositories. | `mcp__mountains__fetch` `mcp__mountains__get_daylight` `mcp__mountains__get_huts` |
| untrusted-input | Brings in text someone else can write: web pages, inbound email, messages, issues and comments. | `mcp__mountains__fetch` `mcp__mountains__get_capabilities` `mcp__mountains__get_changes` `mcp__mountains__get_daylight` `mcp__mountains__get_huts` `mcp__mountains__get_notices` `mcp__mountains__get_peak` `mcp__mountains__get_route` `mcp__mountains__get_route_briefs` `mcp__mountains__get_route_point` `mcp__mountains__get_weather` `mcp__mountains__resolve_peak` `mcp__mountains__search` `mcp__mountains__search_peaks` `mcp__mountains__search_routes` |
| outbound | Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL. | none |

## Findings

No check matched anything in these tool definitions.


## Only reads (15)

Looks things up and changes nothing. Claude Code: allow.

### `fetch`

- The name "fetch" says "fetch": a word for reading.
- Tag private-data: The description's first sentence says "read" and "document": it reads documents.
- Tag untrusted-input: The server marks it openWorldHint: true: it reaches things outside the server's own data.

Description, as the server wrote it:

```untrusted-server-text
Read a peak search result by catalogue slug as a citable text document. Example input: {"id":"ben-nevis"}. This retrieves catalogue documents, not external website URLs; use your own browsing tool for publisher pages. Includes routes, season, access, hazards, huts, notices and provenance. Use get_weather for current forecasts.
```

### `get_capabilities`

- The name "get_capabilities" says "get": a word for reading.
- Tag untrusted-input: The server marks it openWorldHint: true: it reaches things outside the server's own data.

Description, as the server wrote it:

```untrusted-server-text
Inspect actual catalogue coverage, output JSON schemas, data version, units and unsupported operations before planning. Unknown data is not evidence of absence.
```

### `get_changes`

- The name "get_changes" says "get": a word for reading.
- Tag untrusted-input: The server marks it openWorldHint: true: it reaches things outside the server's own data.

Description, as the server wrote it:

```untrusted-server-text
Compare a watched set of peaks with a previous snapshot. Returns content changes, removals and an updated snapshot. No changes means no new source data, not proof that conditions are unchanged. Date-dependent notice status must still be checked.
```

### `get_daylight`

- The name "get_daylight" says "get": a word for reading.
- Tag private-data: The description's first sentence says "calendar": it reads calendars.
- Tag untrusted-input: The server marks it openWorldHint: true: it reaches things outside the server's own data.

Description, as the server wrote it:

```untrusted-server-text
Compute sunrise, sunset and civil twilight for the exact calendar date and IANA zone. UTC instants handle daylight saving and polar days. Terrain and weather can reduce usable daylight.
```

### `get_huts`

- The name "get_huts" says "get": a word for reading.
- Tag private-data: The description's first sentence says "read" and "contact": it reads contacts.
- Tag untrusted-input: The server marks it openWorldHint: true: it reaches things outside the server's own data.

Description, as the server wrote it:

```untrusted-server-text
Read huts, documented seasonal operation, source years and booking/contact URLs for a peak. Beds means capacity, never vacancies. Live availability, reservations, rental inventory and current opening status are unknown. Do not infer next year's opening dates from a dated season; contact the linked provider.
```

### `get_notices`

- The name "get_notices" says "get": a word for reading.
- Tag untrusted-input: The server marks it openWorldHint: true: it reaches things outside the server's own data.

Description, as the server wrote it:

```untrusted-server-text
Read dated notices with publication validity, explicit scope uncertainty and recurrence hints. Supply slug and the trip date; omitted date means today (UTC), echoed in requestedDate. Expired notices may describe recurring regulations; expiry is not evidence that access is open. Verify current law with the linked source.
```

### `get_peak`

- The name "get_peak" says "get": a word for reading.
- Tag untrusted-input: The server marks it openWorldHint: true: it reaches things outside the server's own data.

Description, as the server wrote it:

```untrusted-server-text
Get compact peak facts and route IDs. Example input: {"slug":"ben-nevis"}. Optionally request access, huts, seasons, hazards or provenance sections. For fact questions search may already suffice. For current weather use get_weather; for hut booking information use get_huts. Research is not live availability.
```

### `get_route`

- The name "get_route" says "get": a word for reading.
- Tag untrusted-input: The server marks it openWorldHint: true: it reaches things outside the server's own data.

Description, as the server wrote it:

```untrusted-server-text
Get one route by peak slug and routeId from get_peak: grade, equipment, key passages, stages, trailhead, timing, confidence and geometry QA. Failed, truncated or outline geometry must not be used for navigation. Times are estimates. No live route safety or opening guarantee.
```

### `get_route_briefs`

- The name "get_route_briefs" says "get": a word for reading.
- Tag untrusted-input: The server marks it openWorldHint: true: it reaches things outside the server's own data.

Description, as the server wrote it:

```untrusted-server-text
Compare up to six known routes in one compact evidence packet: grade, timing conflicts, selected equipment, linked huts, access, notices and optional dated daylight. Preserves per-route errors and source provenance. Partial results must not be treated as complete; no booking, live transport or suitability guarantee. Use get_route for full details and get_weather for forecasts.
```

### `get_route_point`

- The name "get_route_point" says "get": a word for reading.
- Tag untrusted-input: The server marks it openWorldHint: true: it reaches things outside the server's own data.

Description, as the server wrote it:

```untrusted-server-text
Look up a named waypoint or difficult passage on a route. Returns source notes, known coordinates, nearby stage names, key passages and relevant equipment. Missing coordinates or conditions remain unknown; this is not live navigation guidance.
```

### `get_weather`

- The name "get_weather" says "get": a word for reading.
- Tag untrusted-input: The server marks it openWorldHint: true: it reaches things outside the server's own data.

Description, as the server wrote it:

```untrusted-server-text
Get published weather for a peak and optional summit/hut/trailhead target. Set targetId and start/end for a bounded planning response; unfiltered forecasts can be large. Point samples are separate from accumulated rain/snow intervals and complete-window totals. Check target coverage and missing fields. Stale is marked; expired, missing and far-future data is unavailable. For a trip months away use get_peak seasons instead, never invent a forecast or a safety verdict.
```

### `resolve_peak`

- The name "resolve_peak" says "resolve": a word for reading.
- Tag untrusted-input: The server marks it openWorldHint: true: it reaches things outside the server's own data. The description's first sentence says "resolve" and "url": it reads web pages, which anyone can write.

Description, as the server wrote it:

```untrusted-server-text
Resolve a canonical peak ID, external Wikidata/OSM ID, current slug or exact name to its current slug and citable URL. Example input: {"id":"Ben Nevis"}. Use canonical IDs to recover from renamed slugs.
```

### `search`

- The name "search" says "search": a word for reading.
- Tag untrusted-input: The server marks it openWorldHint: true: it reaches things outside the server's own data.

Description, as the server wrote it:

```untrusted-server-text
Search peaks.fyi by mountain name, alternative name, country, range or climbing request. Returns citable peak IDs and URLs. Use fetch to read a result; use search_peaks for explicit filters and pagination. An empty result means no match in this catalogue, not that the mountain does not exist.
```

### `search_peaks`

- The name "search_peaks" says "search": a word for reading.
- Tag untrusted-input: The server marks it openWorldHint: true: it reaches things outside the server's own data.

Description, as the server wrote it:

```untrusted-server-text
Find and compare mountains with explicit country, elevation, season, difficulty and glacier filters. All filters are hard constraints; never silently relaxed. Returns compact peak summaries, IDs, total and nextOffset. Read get_peak and get_route before recommending a route: peak-level filters can describe different routes.
```

### `search_routes`

- The name "search_routes" says "search": a word for reading.
- Tag untrusted-input: The server marks it openWorldHint: true: it reaches things outside the server's own data.

Description, as the server wrote it:

```untrusted-server-text
Find routes satisfying all supplied constraints on the SAME route, including difficulty, glacier travel, style and computed round-trip hours. Unknown glacier status is excluded by glacier filters. Searches all candidate peaks; use nextCursor until null for complete results. Coordinates filter peak locations, not trailheads. Transport matches documented prose, not confirmed operation. Historical season and public transport descriptions are not current operating confirmations. Read route details and conflicts before recommending.
```

## Claude Code permissions

For `.claude/settings.json`, assuming the server is installed as `mountains`:

```json
{
  "permissions": {
    "allow": [
      "mcp__mountains__get_route_briefs",
      "mcp__mountains__get_capabilities",
      "mcp__mountains__get_notices",
      "mcp__mountains__resolve_peak",
      "mcp__mountains__get_changes",
      "mcp__mountains__get_daylight",
      "mcp__mountains__search",
      "mcp__mountains__fetch",
      "mcp__mountains__get_peak",
      "mcp__mountains__get_route",
      "mcp__mountains__get_route_point",
      "mcp__mountains__get_huts",
      "mcp__mountains__search_routes",
      "mcp__mountains__get_weather",
      "mcp__mountains__search_peaks"
    ],
    "ask": [],
    "deny": []
  }
}
```

Capability tags behind the rules (a read tagged outbound is asked about):

- `mcp__mountains__get_route_briefs`: untrusted-input
- `mcp__mountains__get_capabilities`: untrusted-input
- `mcp__mountains__get_notices`: untrusted-input
- `mcp__mountains__resolve_peak`: untrusted-input
- `mcp__mountains__get_changes`: untrusted-input
- `mcp__mountains__get_daylight`: private-data, untrusted-input
- `mcp__mountains__search`: untrusted-input
- `mcp__mountains__fetch`: private-data, untrusted-input
- `mcp__mountains__get_peak`: untrusted-input
- `mcp__mountains__get_route`: untrusted-input
- `mcp__mountains__get_route_point`: untrusted-input
- `mcp__mountains__get_huts`: private-data, untrusted-input
- `mcp__mountains__search_routes`: untrusted-input
- `mcp__mountains__get_weather`: untrusted-input
- `mcp__mountains__search_peaks`: untrusted-input
