Skip to content

PeakCam Snow

by peakcam.io · remote · no sign-in to list tools · v0.1.0 · published by io.peakcam

Live snow reports, SNOTEL measurements, webcams and powder rankings for 150 ski resorts.

Changes · 1

21 tools: 1 change things and 20 only read.

Scanned Oct 21, 2026

No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http snow https://www.peakcam.io/api/mcp

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

21 tools

Changes things 1Claude Code: ask
  • askOne natural-language question in, one tool result out, deterministically: the router resolves the resort by name or nickname, picks an intent from the wording (snow, open/closed, f…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    One natural-language question in, one tool result out, deterministically: the router resolves the resort by name or nickname, picks an intent from the wording (snow, open/closed, forecast, cams, history, compare, where did it snow, percent of normal, profile, regions, alerts) and calls the matching tool. Returns the tool's data, the resort, citation URLs and a dated sentence to quote. Answers `answerable: false` with suggestions rather than guessing. No language model is involved.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
Only reads 20Claude Code: allow
  • compare_modelsHow each weather model has verified at a resort over the trailing 90 days, graded against measured snow (SNOTEL depth change, clipped at zero), and what each model says for the nex…No findings

    Why it is in this group

    • The name "compare_models" says "compare": a word for reading.
    Description, as the server wrote it
    How each weather model has verified at a resort over the trailing 90 days, graded against measured snow (SNOTEL depth change, clipped at zero), and what each model says for the next 7 days right now. Per model: rank, mean absolute error at day 1/3/7 (cm), bias ratio (total forecast over total measured; above 1 over-forecasts), samples, plus the current 7-day total and horizon. `truthBasis` and `measuredDays` say what the grading rested on; a resort with no measured series has no scores. The PeakCam blend is graded by the same rule and appears as `blend`.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • compare_resortsSide-by-side latest snow, today's Snow Score (0–100 with a rating; get_score explains it), season status and cam counts for 2–6 resorts.No findings

    Why it is in this group

    • The name "compare_resorts" says "compare": a word for reading.
    Description, as the server wrote it
    Side-by-side latest snow, today's Snow Score (0–100 with a rating; get_score explains it), season status and cam counts for 2–6 resorts. Every slug must resolve; an unknown one returns suggestions.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • find_powderRank resorts by new snow in the last 24 or 48 hours, optionally within one state/province and above a minimum.No findings

    Why it is in this group

    • The name "find_powder" says "find": a word for reading.
    Description, as the server wrote it
    Rank resorts by new snow in the last 24 or 48 hours, optionally within one state/province and above a minimum. Pass sourceOnly="snotel" to answer "where did it snow most, measured only" with station data alone. Resorts with no report are left out; zero inches is a measurement. Each row also carries today's Snow Score (`score`, 0–100 with a rating) when one is stored; get_score explains it. Sources: `snotel` = measured at a USDA NRCS SNOTEL station near the resort (station elevation, not the summit), `open_meteo` = weather-model estimate for resorts without a station.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_alert_optionsHow to be told when it snows, without this server writing anything: the powder-alert threshold and schedule, the e-mail, webhook (Standard Webhooks, signed), Atom and iCal channels…No findings

    Why it is in this group

    • The name "get_alert_options" says "get": a word for reading.
    Description, as the server wrote it
    How to be told when it snows, without this server writing anything: the powder-alert threshold and schedule, the e-mail, webhook (Standard Webhooks, signed), Atom and iCal channels, the per-resort public Atom feed, the webhook payload contract, and the manage page where a person registers a destination. Pass a slug to get that resort's feed URL.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_cam_timelineArchived still frames for a resort's webcams (or one cam) over the last 1–48 hours, as links with capture times, plus the newest storm frame on tape per cam.No findings

    Why it is in this group

    • The name "get_cam_timeline" says "get": a word for reading.
    Description, as the server wrote it
    Archived still frames for a resort's webcams (or one cam) over the last 1–48 hours, as links with capture times, plus the newest storm frame on tape per cam. Only cams whose operator allows archiving appear; PeakCam captures every 6 hours. Use it for "what did it look like this morning" or "show me the last storm". Frames are never returned inline.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_forecastFourteen-day blended snow forecast for a resort: per day the median snowfall across the weather models that reach that day (ECMWF IFS, GFS, GEM, ICON, JMA, Météo-France, UKMO; NBM …No findings

    Why it is in this group

    • The name "get_forecast" says "get": a word for reading.
    Description, as the server wrote it
    Fourteen-day blended snow forecast for a resort: per day the median snowfall across the weather models that reach that day (ECMWF IFS, GFS, GEM, ICON, JMA, Météo-France, UKMO; NBM and HRRR added for US points), the 25th/75th percentile band as snowfallLoIn/snowfallHiIn, and modelCount so you can weigh a far-out two-model day against a near-term nine-model one. `summary` has next 48 h, 7- and 14-day totals and the peak day. US resorts also get the National Weather Service text narrative (`periods`), with its snow amounts replaced by the blend. Weather data by Open-Meteo.com (CC BY 4.0): quote the credit. `available: false` when no model run is stored yet.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_leaderboardResorts ranked on one of four season boards: best-powder-this-week (measured new snow in the last 7 days), season-powder-days (days with ≥ 8 in since Oct 1), deepest-base (latest s…No findings

    Why it is in this group

    • The name "get_leaderboard" says "get": a word for reading.
    Description, as the server wrote it
    Resorts ranked on one of four season boards: best-powder-this-week (measured new snow in the last 7 days), season-powder-days (days with ≥ 8 in since Oct 1), deepest-base (latest station or model depth) and season-snowfall (measured new snow since Oct 1), optionally within one state and measured-only. The season boards cover the Northern hemisphere. Answers a dated sentence, the rule in words and rows with source and station. Same data as https://www.peakcam.io/snow-report/{kind}.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_monthly_climatologyAverage snowfall, snow days (≥ 1 in), depth and the biggest storm per calendar month at the resort's SNOTEL station, over the 30 most recent complete winters and, separately, the 1…No findings

    Why it is in this group

    • The name "get_monthly_climatology" says "get": a word for reading.
    Description, as the server wrote it
    Average snowfall, snow days (≥ 1 in), depth and the biggest storm per calendar month at the resort's SNOTEL station, over the 30 most recent complete winters and, separately, the 10 most recent, with the recent decade as a percent of the 30-winter figure and a note when they differ by more than 10 %. Use it for "which month is snowiest", "how much does it usually snow in January". Resorts without a station normal answer available: false.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_opening_datesSeason opening and closing dates with status (open / closed / unknown) for every resort, or those in one state/province, soonest opening first.No findings

    Why it is in this group

    • The name "get_opening_dates" says "get": a word for reading.
    Description, as the server wrote it
    Season opening and closing dates with status (open / closed / unknown) for every resort, or those in one state/province, soonest opening first. Confirmed dates come from the resort; projected ones are third-party estimates.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_percent_of_normalSNOTEL-fed resorts ranked by snowpack relative to normal: snow water equivalent against the station's own 1991–2020 median for today's date, deepest first, optionally within one st…No findings

    Why it is in this group

    • The name "get_percent_of_normal" says "get": a word for reading.
    Description, as the server wrote it
    SNOTEL-fed resorts ranked by snowpack relative to normal: snow water equivalent against the station's own 1991–2020 median for today's date, deepest first, optionally within one state. Only measured station readings qualify, inside the 10–300 % band and above 2 in of SWE; early-season noise is withheld, not ranked. Same data as https://www.peakcam.io/snow-report/percent-of-normal.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_resort_camsThe resort's webcams as links: PeakCam page URL, the operator's stream or page URL, a still-image URL when one exists, and health (live / down / unchecked, from PeakCam's probe, no…No findings

    Why it is in this group

    • The name "get_resort_cams" says "get": a word for reading.
    Description, as the server wrote it
    The resort's webcams as links: PeakCam page URL, the operator's stream or page URL, a still-image URL when one exists, and health (live / down / unchecked, from PeakCam's probe, not proof of a live broadcast). Frames are never returned inline.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_resort_conditionsThe latest snow report for one resort with provenance, inside the conditions contract v2 envelope: `data.status` is the derived operating status (OPEN, CLOSED_TODAY, PRE_SEASON, OF…No findings

    Why it is in this group

    • The name "get_resort_conditions" says "get": a word for reading.
    Description, as the server wrote it
    The latest snow report for one resort with provenance, inside the conditions contract v2 envelope: `data.status` is the derived operating status (OPEN, CLOSED_TODAY, PRE_SEASON, OFF_SEASON or UNKNOWN; OPEN only on a fresh operator lift feed or a resort-confirmed opening date, never by default) with `reasons`; every field in `data` (base depth measured and operator-reported, new snow 24 h / 48 h, SWE, percent of normal, lifts and runs open / total, surface, snow quality, temperature, wind, blended 48-hour forecast, season dates) is `{value, source, observedAt, confidence, freshness: {tier, ageHours}}`; `depthDisagreement` is set when the station and the operator differ by more than 30 % (quote the measured value); `sentence` is a dated line to quote. The classic Resort document (`snow`, `season`, `cams`, `profile`, `measuredNow`) rides alongside for compatibility. Use it for "is X open today" as well as "what are conditions at X". Sources: `snotel` = measured at a USDA NRCS SNOTEL station near the resort (station elevation, not the summit), `open_meteo` = weather-model estimate for resorts without a station.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_resort_profileWho and where a resort is, without the snow numbers: location and elevations, website and social links, PeakCam's cam page, the SNOTEL station its numbers come from (if any), seaso…No findings

    Why it is in this group

    • The name "get_resort_profile" says "get": a word for reading.
    Description, as the server wrote it
    Who and where a resort is, without the snow numbers: location and elevations, website and social links, PeakCam's cam page, the SNOTEL station its numbers come from (if any), season status, cam counts, and every URL PeakCam publishes for it (page, JSON, markdown, Atom feed, state hub). Use get_resort_conditions for today's snow.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_scorePeakCam's 0–100 Snow Score for one resort, scored once a day by a fixed formula (scoredBy is always `algorithmic`): `today` carries the score, its four-tier rating (great ≥ 75, goo…No findings

    Why it is in this group

    • The name "get_score" says "get": a word for reading.
    Description, as the server wrote it
    PeakCam's 0–100 Snow Score for one resort, scored once a day by a fixed formula (scoredBy is always `algorithmic`): `today` carries the score, its four-tier rating (great ≥ 75, good ≥ 55, fair ≥ 35, else poor; the same words as the conditions rating), a dated tagline to quote and five components, each with points, max, a one-line basis and its source: depth vs the station's 1991–2020 normal (30), new snow over the last 7 days (25), the blended 7-day forecast (20), snow quality from days since snow, the 3-day high and the surface tags (15), and the operating status (10). `history` is one point per scored day over the last 30 days. Use it for "how good is X right now and why", "score X out of 100", "is X better than last week"; for a ranking use find_powder, compare_resorts or /api/v1/snow-report?sort=score. `available: false` before the first scoring run.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_season_statsSeason-to-date for one resort from PeakCam's own daily station record: measured snowfall since the season start (daily new snow = the positive change in station depth, a floor on w…No findings

    Why it is in this group

    • The name "get_season_stats" says "get": a word for reading.
    Description, as the server wrote it
    Season-to-date for one resort from PeakCam's own daily station record: measured snowfall since the season start (daily new snow = the positive change in station depth, a floor on what fell), days measured, snow days, powder days (8 in or more, the alert threshold), current and deepest base, percent of the 30-winter normal to this day and of the recent decade (with a baselineNote when they disagree by more than 10 %), the same day last year, a 7-day trend and a dated sentence to quote. Use it for "how is the season going", "is this a good year", "how does it compare with last year".

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_snow_historyDaily snow depth, snow water equivalent, precipitation accumulation and temperatures for the last 1–30 days at the resort's station (SNOTEL where there is one, Open-Meteo model oth…No findings

    Why it is in this group

    • The name "get_snow_history" says "get": a word for reading.
    Description, as the server wrote it
    Daily snow depth, snow water equivalent, precipitation accumulation and temperatures for the last 1–30 days at the resort's station (SNOTEL where there is one, Open-Meteo model otherwise), newest first. Use it for "how has the base changed this week" questions. Pass `season` (`2024-25`, or `current`) for a whole season's daily depth and new-snow rows instead of the last N days; get_season_stats summarises a season.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_stationsWhat the instruments near one resort measured, by elevation band (summit / mid / base): up to three stations within 25 km with the network named (SNOTEL, GHCN-Daily, NWS, BC ASWS, …No findings

    Why it is in this group

    • The name "get_stations" says "get": a word for reading.
    Description, as the server wrote it
    What the instruments near one resort measured, by elevation band (summit / mid / base): up to three stations within 25 km with the network named (SNOTEL, GHCN-Daily, NWS, BC ASWS, ECCC), elevation, distance, the time of the reading and its age, snow depth, new snow, SWE, temperature and wind. Daily networks carry depth; hourly ones carry temperature and wind. Use it for "what is it like at the top right now" and "how old is that number" questions; the snow report itself comes from get_resort_conditions.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_timelapsesRendered timelapse clips for a resort's webcams (or one cam), as links: the rolling 24-hour MP4 per cam (H.264, 7 fps, 720p max, at most 3 MB, re-rendered every 6 hours from PeakCa…No findings

    Why it is in this group

    • The name "get_timelapses" says "get": a word for reading.
    Description, as the server wrote it
    Rendered timelapse clips for a resort's webcams (or one cam), as links: the rolling 24-hour MP4 per cam (H.264, 7 fps, 720p max, at most 3 MB, re-rendered every 6 hours from PeakCam's still archive) with its poster JPEG and frame bounds, plus storm reels (rendered while the resort's measured 24 h new snow is 8 in or more, from the first frame after the last dry day, capped at 72 h; one per storm day, kept a year). Only cams whose operator allows archiving have clips. Use it for "show me the last 24 hours" or "show me the last storm" questions; get_cam_timeline returns the individual frames. Media is never returned inline.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_regionsEvery state, province and country PeakCam covers, with resort, reporting, measured (SNOTEL) and cam counts and the hub page URL.No findings

    Why it is in this group

    • The name "list_regions" says "list": a word for reading.
    Description, as the server wrote it
    Every state, province and country PeakCam covers, with resort, reporting, measured (SNOTEL) and cam counts and the hub page URL. Call it to learn the valid `state` values for find_powder, get_opening_dates and get_percent_of_normal, or to answer "where does PeakCam have data".

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • search_resortsFind PeakCam resorts by name (or part of one, or a region) and get their slugs with a one-line snow summary each.No findings

    Why it is in this group

    • The name "search_resorts" says "search": a word for reading.
    Description, as the server wrote it
    Find PeakCam resorts by name (or part of one, or a region) and get their slugs with a one-line snow summary each. Call this first when the user names a resort; then use the slug with the other tools. Covers about 300 resorts in the US, Canada, Chile and Argentina.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 0.1.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http snow https://www.peakcam.io/api/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__snow__search_resorts",
      "mcp__snow__get_resort_conditions",
      "mcp__snow__get_resort_cams",
      "mcp__snow__find_powder",
      "mcp__snow__compare_resorts",
      "mcp__snow__get_forecast",
      "mcp__snow__get_snow_history",
      "mcp__snow__get_opening_dates",
      "mcp__snow__get_resort_profile",
      "mcp__snow__get_percent_of_normal",
      "mcp__snow__list_regions",
      "mcp__snow__get_alert_options",
      "mcp__snow__get_cam_timeline",
      "mcp__snow__get_stations",
      "mcp__snow__compare_models",
      "mcp__snow__get_season_stats",
      "mcp__snow__get_monthly_climatology",
      "mcp__snow__get_leaderboard",
      "mcp__snow__get_timelapses",
      "mcp__snow__get_score"
    ],
    "ask": [
      "mcp__snow__ask"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as snow. Review it before you use it.